• 【python百炼成魔】python之字典详解


    前言

    今天我们一起来探讨python的另外一种类型: 字典,如果你没有看过列表和元组,建议先学习列表和元组。

    【python百炼成魔】python之元组详解

    【python百炼成魔】python之列表详解

    在这里插入图片描述

    字典的概念

    我们在前面的章节中已经学习了列表与元组,这两种数据类型中的元素都是按照顺序排列的,所以可以使用索引进行取值。

    本节要学习的知识点是字典,它不通过索引就能取到值,换句话说,字典是无顺序的数据结构

    字典可以被看成一种列表型的数据结构,是一种可以容纳其他类型数据的容器。

    字典中的元素是使用“键-值”表示的,而且“键-值”成对出现,键与值之间存在的关系可以描述为通过键取值。
    这是字典的核心概念,类似通过部首查字

    图示:

    在这里插入图片描述

    语法格式及字典的创建

    创建字典的方法:

    1. 使用花括号({})和键值对(key-value pairs):
    my_dict = {'key1': 'value1', 'key2': 'value2', 'key3': 'value3'}
    
    • 1
    1. 使用内置的dict()函数:
    my_dict = dict(key1='value1', key2='value2', key3='value3')
    
    • 1
    1. 使用包含键值对的列表和列表解析:
    key_value_pairs = [('key1', 'value1'), ('key2', 'value2'), ('key3', 'value3')]
    my_dict = {key: value for key, value in key_value_pairs}
    
    • 1
    • 2

    在这个代码片段中,key_value_pairs是一个包含键值对的列表,每个键值对由两个元素组成,分别是键和对应的值。

    列表中的每个元素都代表一个键值对,例如 (‘key1’, ‘value1’)、(‘key2’, ‘value2’) 等。

    my_dict = {key: value for key, value in key_value_pairs} 是使用列表解析创建字典的方式

    在这个列表解析中,我们遍历 key_value_pairs 列表中的每个元素,将每个元素中的第一个元素作为键,第二个元素作为值,然后使用这些键值对创建一个新的字典 my_dict。

    过程如下:

    • 在列表解析中,迭代 key_value_pairs 列表中的每个元素,每次迭代都将该元素解构为 key 和 value。
    • 在每次迭代中,将 key 作为键,value 作为对应的值,创建一个键值对,然后将该键值对添加到新的字典 my_dict 中。
    • 最终,my_dict 将包含原始列表中的所有键值对,以键为索引的字典对象就创建完成。
    1. 使用zip()函数结合两个列表来创建字典:
    keys = ['key1', 'key2', 'key3']
    values = ['value1', 'value2', 'value3']
    my_dict = dict(zip(keys, values))
    
    • 1
    • 2
    • 3

    这些是创建字典的一些常见方式,您可以根据具体的需求选择使用最适合的方式来创建字典。无论哪种方式,都可以灵活地创建具有键值对的字典对象

    重点看前两种方法就可以。

    字典的日常操作

    1. 获取字典的值

    # 定义一个字典
    my_dict = {'name': 'mufenggrow', 'age': 19, 'city': 'New York'}
    
    # 获取字典中的值
    name = my_dict['name']
    age = my_dict['age']
    city = my_dict['city']
    
    # 打印获取到的值
    print("Name:", name)
    print("Age:", age)
    print("City:", city)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    当使用字典的键来获取值时,如果键不存在,会引发 KeyError 错误。

    country = my_dict.get('country', 'Unknown')  # 键不存在时使用默认值
    
    • 1

    这样获取出来之后就变成了:
    Country: Unknown

    2. 获取字典视图的三个方法

    字典提供了三个方法来获取字典的视图,它们分别是 keys()、values() 和 items()。这些方法返回的是字典视图对象,可以用于遍历字典的键、值和键值对。

    • key()
      该方法返回一个包含字典所有键的视图对象,可以通过遍历来获取每个键。
    my_dict = {'name': 'John', 'age': 25, 'city': 'New York'}
    keys_view = my_dict.keys()
    for key in keys_view:
        print(key)
    
    • 1
    • 2
    • 3
    • 4
    • values()
      该方法返回一个包含字典所有值的视图对象,可以通过遍历来获取每个值
    my_dict = {'name': 'John', 'age': 25, 'city': 'New York'}
    values_view = my_dict.values()
    for value in values_view:
        print(value)
    
    • 1
    • 2
    • 3
    • 4
    • items()
      该方法返回一个包含字典所有键值对的视图对象,可以通过遍历来获取每个键值对。
    my_dict = {'name': 'John', 'age': 25, 'city': 'New York'}
    items_view = my_dict.items()
    for key, value in items_view:
        print(key, value)
    
    • 1
    • 2
    • 3
    • 4

    3. 增加元素,修改元素,删除元素

    my_dict = {'name': 'mufenggrow', 'age': 19, 'city': 'qingdao'}
    
    # 增加元素
    my_dict['gender'] = 'male'
    my_dict['country'] = 'China'
    
    # 打印字典
    print("字典增加元素后的内容:", my_dict)
    
    # 修改元素
    my_dict['age'] = 20
    my_dict['city'] = 'Beijing'
    
    # 打印字典
    print("字典修改元素后的内容:", my_dict)
    
    # 删除元素
    del my_dict['country']
    
    # 打印字典
    print("字典删除元素后的内容:", my_dict)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    执行结果:

    字典增加元素后的内容: {'name': 'mufenggrow', 'age': 19, 'city': 'qingdao', 'gender': 'male', 'country': 'China'}
    字典修改元素后的内容: {'name': 'mufenggrow', 'age': 20, 'city': 'Beijing', 'gender': 'male', 'country': 'China'}
    字典删除元素后的内容: {'name': 'mufenggrow', 'age': 20, 'city': 'Beijing', 'gender': 'male'}
    
    • 1
    • 2
    • 3

    4. 字典的遍历

    my_dict = {'name': 'mufenggrow', 'age': 19, 'city': 'qingdao'}
    
    # 遍历键
    print("遍历键:")
    for key in my_dict:
        print(key)
    
    # 遍历值
    print("\n遍历值:")
    for value in my_dict.values():
        print(value)
    
    # 遍历键值对
    print("\n遍历键值对:")
    for key, value in my_dict.items():
        print(key, value)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    执行结果:

    遍历键:
    name
    age
    city
    
    遍历值:
    mufenggrow
    19
    qingdao
    
    遍历键值对:
    name mufenggrow
    age 19
    city qingdao
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    本例中:

    • 使用 for key in my_dict 的方式遍历字典的键,并分别打印每个键。
    • 使用 for value in my_dict.values() 的方式遍历字典的值,并分别打印每个值。
    • 使用 for key, value in my_dict.items() 的方式遍历字典的键值对,并分别打印每个键和对应的值。

    5. 字典的常用方法

    常用的方法有:

    • formkeys()方法
    • get() 方法
    • setdefault() 方法
    • pop() 方法

    以下是四个方法的代码示例,基于字典的增加、获取、设置和删除操作:

    • fromkeys() 方法:
    keys = ['name', 'age', 'city', 'gender', 'country']
    default_value = 'Unknown'
    
    my_dict = dict.fromkeys(keys, default_value)
    
    print(my_dict)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    输出结果:

    {'name': 'Unknown', 'age': 'Unknown', 'city': 'Unknown', 'gender': 'Unknown', 'country': 'Unknown'}
    
    fromkeys() 方法用于创建一个新的字典,其中使用指定的键列表作为键,使用给定的默认值作为对应的值。
    
    • 1
    • 2
    • 3
    • get() 方法:
    my_dict = {'name': 'mufenggrow', 'age': 19, 'city': 'QD', 'gender': 'Male', 'country': 'China'}
    
    age = my_dict.get('age')
    occupation = my_dict.get('occupation', 'Unknown')
    
    print("Age:", age)
    print("Occupation:", occupation)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    输出结果:

    Age: 19
    Occupation: Unknown
    
    • 1
    • 2

    get() 方法用于根据给定的键获取字典中对应的值。如果键存在,则返回对应的值;如果键不存在,则返回指定的默认值(如果没有提供默认值,则返回 None)。

    • setdefault() 方法:
    my_dict = {'name': 'mufenggrow', 'age': 19, 'city': 'QD'}
    
    hobby = my_dict.setdefault('hobby', 'Unknown')
    country = my_dict.setdefault('country', 'China')
    
    print(my_dict)
    print("Hobby:", hobby)
    print("Country:", country)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 输出结果:
    {'name': 'mufenggrow', 'age': 19, 'city': 'QD', 'hobby': 'Unknown', 'country': 'China'}
    Hobby: Unknown
    Country: China
    
    • 1
    • 2
    • 3

    setdefault() 方法用于获取字典中给定键的值,如果键存在,则返回对应的值;如果键不存在,则将键插入字典并设置指定的默认值。

    • pop() 方法:
    my_dict = {'name': 'mufenggrow', 'age': 19, 'city': 'QD', 'hobby': 'Unknown', 'country': 'China'}
    
    hobby = my_dict.pop('hobby')
    
    print(my_dict)
    print("Popped Hobby:", hobby)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    输出结果:

    {'name': 'mufenggrow', 'age': 19, 'city': 'QD', 'country': 'China'}
    Popped Hobby: Unknown
    
    • 1
    • 2

    pop() 方法用于删除并返回字典中给定键的值。

    在使用pop()方法时,如果找到key,就会删除该键值对;如果找不到key,就会返回defalut设置的值;如果该值没有设置,就会报错。

    my_dict = {'name': 'mufenggrow', 'age': 19, 'city': 'QD'}
    
    # 删除键为 'age' 的键值对,并返回对应的值
    age = my_dict.pop('age')
    print("Popped Age:", age)
    print("Updated Dictionary:", my_dict)
    
    # 尝试删除不存在的键 'country',返回默认值 'Unknown'
    country = my_dict.pop('country', 'Unknown')
    print("Popped Country:", country)
    print("Updated Dictionary:", my_dict)
    
    # 尝试删除不存在的键 'country',没有提供默认值,会抛出 KeyError 异常
    country = my_dict.pop('country')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    使用 pop(‘country’, ‘Unknown’) 尝试删除键为 ‘country’ 的键值对,由于 ‘country’ 不存在,所以返回了给定的默认值 ‘Unknown’。

    最后,使用 pop(‘country’) 尝试删除不存在的键 ‘country’,但由于没有提供默认值,默认情况下会抛出 KeyError 异常。

    总结

    我是沐风晓月,我在csdn等你

    原创不易,还希望各位大佬支持一下 \textcolor{blue}{原创不易,还希望各位大佬支持一下} 原创不易,还希望各位大佬支持一下

    👍 点赞,你的认可是我创作的动力! \textcolor{green}{点赞,你的认可是我创作的动力!} 点赞,你的认可是我创作的动力!

    ⭐️ 收藏,你的青睐是我努力的方向! \textcolor{green}{收藏,你的青睐是我努力的方向!} 收藏,你的青睐是我努力的方向!

    ✏️ 评论,你的意见是我进步的财富! \textcolor{green}{评论,你的意见是我进步的财富!} 评论,你的意见是我进步的财富!

  • 相关阅读:
    深入了解Java的核心库
    Go语言的[GPM模型]
    关于二维数组
    数据结构与算法-腾讯面试题单向链表的翻转
    华为云数据库 RDS 下载全量备份文件 wget
    <泛型>带你更详细的认识泛型
    Vue组件中引入jQuery
    【必看技巧】Access开发者必备:如何用代码隐藏功能区、导航区、状态栏?
    ubuntu 输入法
    解读创邻科技Galaxybase LDBC-SNB测试报告
  • 原文地址:https://blog.csdn.net/wisdom_futrue/article/details/131434731