• Python编程技巧 – 使用字典


    Python编程技巧 – 使用字典

    Python Programming Skills – Using Dictionary

    Dictionary, 即字典,这是Python语言的一种重要的数据结构;Python字典是以键(key)值(value)对为元素,来存储数据的集合。

    前文提到Python列表,即List; 但字典和列表不同,它使用大括号{ }来指定包装。

    { key1 : value1, key2 : value2, key3 : value3… … }
    
    • 1

    本文简要介绍字典及其使用技巧,包括如何创建字典、添加值,字典条目及引用,以及如何用构造器创建字典等。

    1. 创建字典

    比如,在登记人员基本信息时,可采用键值对存储学生信息:

    students = { ‘name’ : ‘Bob’, ‘age’ : 20, ‘gender’ : ‘male’}
    
    • 1

    这个students就是典型的字典,表达了学生的姓名、年龄和性别这些基本信息。由此看来,它很像一个二维表格。

    在字典中,是一系列唯一的值,同一个字典的键不能重复。同时,每一个键都对应一个数据对象,叫作。上面这个students字典对象中,名叫Bob的学生,具有年龄20,和性别男的特征;如果换成另一个人(对象),那么,就类似于一张二维表,可存入不同学生的数据信息。

    2. 给字典添加值

    与上述字典类似,我们创建另一个字典,即一个给学生评分的字典:

    grade_dict = {‘Bob’ : 3.9, ‘Sue’ : 3.9,  ‘Dick’ : 2.5}
    
    • 1

    上述语句包含了三个条目。键分别为字符串’Bob’, ‘Sue’ 和’Dick’; 它们分别对应于值3.9, 3.9 和2.5。

    创建了字典后,可以给字典添加条目,也就是给字典添加值。如下代码:

    grade_dict[‘Bill G’] = 4.0
    
    • 1

    此时,打印这个字典,会发现真正添加了这个新条目,运行结果如下图:
    在这里插入图片描述

    3. 键的类型

    字典需要遵循以下的规则,即所有键必须是相同的类型,或者,至少是可以兼容的类型,例如:整型和浮点型。

    在确定相同类型的前提下,字典如果尝试获取特定键的值且该键不存在,那么Python会抛出异常。为了避免此类情况发生,可以使用get方法确保指定的键存在,如下格式,

    dictionary.get(key [, default_value])
    
    • 1

    方括号中表示可选条目。如果键存在,就返回其在字典中的对应值;否则,返回default_value(如果已指定), 或者返回None(如果未指定)。

    我们创建另一段代码,用来计算单词的出现频率:

    s = input(“Enter a string:)).split()
    word_counter = {}
    for word in s:
      word_counter[word] = word_counter.get(word, 0) + 1
    
    • 1
    • 2
    • 3
    • 4

    最后,打印输出结果如下图:

    在这里插入图片描述

    上述代码按照一定的逻辑执行:

    1) 当找到一个新单词时,将该单词以值0 + 1的形式输入字典中;
    2) 如果找到了已有单词,则get返回该单词的出现频率,然后将其加1;
    3) 因此,如果找到了一个单词,则它的频率计数增加1;如果没有找到该单词,它将被添加到字典中,值为1。split方法用于将字符串分成单个单词列表。

    4. 字典条目

    在这个字典中,它的条目是有序的,可更改的,并且不允许重复;字典每个条目都由键值对的形式表示;如果要表示它,可以使用键名进行引用。

    让我们换一个字典,如下所示:

    thisdict = {
      "brand": "Ford",
      "model": "Mustang",
      "year": 1964
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    用这种格式来表示字典,显得清晰、简约。要引用字典条目,用以下命令:

    print(thisdict[“brand’])
    
    • 1

    打印输出的结果:

    “Ford”
    
    • 1

    字典条目的值,可以是任意数据类型。看以下代码示例:

    thisdict = {
      "brand": "Ford",
      "electric": False,
      "year": 1964,
      "colors": ["red", "white", "blue"]
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    它包含的数据类型由有字符串型、整型、布尔型和列表型。

    5. 有序的字典

    从 Python 版本 3.7 开始,字典变成有序的。(在 Python 3.6 及更早版本中,字典是无序的。)
    当我们说字典是有序的时,这意味着项目有一个定义的顺序,并且该顺序不会改变。

    无序意味着字典条目没有定义的顺序,您不能像上述示例一样,使用索引引用具体的条目。

    当然,字典是可以改变的,这意味着,我们能修改、增加或者删除所创建字典的条目。

    键不允许复制。字典不允许两个条目是同一个键。示例代码如下:

    thisdict = {
      "brand": "Ford",
      "model": "Mustang",
      "year": 1964,
      "year": 2020
    }
    print(thisdict)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    运行结果如下图:
    在这里插入图片描述

    可以看到,虽然上面的字典thisdict里,键year拥有两个值:1964和2020, 但实际上只允许一个值存在,因此后者覆盖了前者,结果为:

    {'brand': 'Ford', 'model': 'Mustang', 'year': 2020}
    
    • 1

    6. 类型与dict()构造器

    在Python语言中,可以用type方法来得到字典的类型,如下代码:

    thisdict = {
      "brand": "Ford",
      "model": "Mustang",
      "year": 1964
    }
    print(type(thisdict))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    执行结果如下图:

    在这里插入图片描述

    可以看到,返回的结果是,说明字典是对象(拥有类的实例)。

    Python提供了dict()构造器来创建字典, 示例代码如下:

    thisdict = dict(name = "John", age = 36, country = "Norway")
    print(thisdict)
    
    • 1
    • 2

    运行输出结果如下图:

    在这里插入图片描述
    可以看到,被赋值的变量thisdict,已经变身为一个字典。

    7. 小结

    字典是对象。字典的数据可以是任意的数据类型;它的条目由键值对组成,每个条目只允许有一个键;字典可以修改、添加和删除条目。字典可以由构造器生成。

    技术好文陆续推出,全部亲测,敬请关注。

    喜欢就点赞哈,您的支持,我的动力。😊

    相关阅读:

    1. Python编程技巧 - 使用字符串(Strings)
    2. Python编程技巧 - 对象和类
    3. Python编程技巧 - 使用列表(Lists)
    4. Python编程技巧 - 转换二进制、八进制和十六进制的函数
    5. Python编程技巧 - 函数入门
    6. 安装最新版Visual Studio Code来开发Python应用程序
    7. 2023最新版Python 3.12.0安装使用指南
    8. 安装2023最新版PyCharm来开发Python应用程序
  • 相关阅读:
    USB概念介绍
    ip转c段
    【uni-app + uView】CountryCodePicker 国家区号组件
    distroless 镜像介绍及 基于cbl-mariner的.NET distroless 镜像的容器
    LintCode 1359: Convert Sorted Array to Binary Search Tree
    Linux计划任务at和cron命令的使用
    批量归一化(部分理解)
    【蒸汽冷凝器型号和PI控制】具有PID控制的蒸汽冷凝器的动力学模型(Matlab&Simulink)
    VUE环境搭建
    京东数据采集与挖掘(京东大数据):2023年10月京东冰箱品牌销售排行榜
  • 原文地址:https://blog.csdn.net/jackson_lingua/article/details/134521076