10.1 字典的定义(掌握)

字典是一种无序的键值对集合,用于存储和查找数据。字典通过键(key)来访问值(value),键必须是唯一的且不可变的(通常为字符串或数字),而值可以是任意数据类型。字典使用大括号 {} 表示,键值对之间用逗号分隔,键和值之间用冒号分隔。

  • 定义字典

    empty_dict = {}                                # 空字典
    person = {"name": "aini", "age": 23, "city": "Shanghai"}  # 包含多个键值对的字典

10.2 字典的基本操作(掌握)

字典支持多种基本操作,如添加、修改、删除和访问键值对。

10.2.1 访问字典的值

  • 使用键来访问字典中的值。如果键不存在会引发 KeyError,可以使用 get() 方法避免异常。

    person = {"name": "aini", "age": 23}
    print(person["name"])             # 输出 'aini'
    print(person.get("age"))          # 输出 23
    print(person.get("gender", "N/A"))  # 输出 'N/A',若键不存在返回默认值

10.2.2 添加和修改键值对

  • 如果键已存在,则修改该键的值;如果键不存在,则添加新的键值对。

    person = {"name": "aini", "age": 23}
    person["city"] = "Shanghai"       # 添加新的键值对
    person["age"] = 24                # 修改已有键的值
    print(person)                     # 输出 {'name': 'aini', 'age': 24, 'city': 'Shanghai'}

10.2.3 删除键值对

  • 使用 del 语句或 pop() 方法删除指定的键值对。popitem() 方法可以随机删除字典中的最后一对键值。

    person = {"name": "aini", "age": 23, "city": "Shanghai"}
    del person["city"]                # 删除指定键
    age = person.pop("age")           # 使用 pop() 获取并删除指定键
    print(person)                     # 输出 {'name': 'aini'}
    print(age)                        # 输出 23

10.2.4 检查键是否存在

  • 使用 in 关键字检查键是否存在于字典中。

    person = {"name": "aini", "age": 23}
    print("name" in person)           # 输出 True
    print("city" in person)           # 输出 False

10.3 字典的常用方法(掌握)

Python 提供了多种方法来操作字典,这些方法可以帮助我们进行遍历、更新和获取键值对等操作。

10.3.1 keys():获取所有键

  • 使用 keys() 方法返回字典中所有键的视图。

    person = {"name": "aini", "age": 23}
    print(person.keys())              # 输出 dict_keys(['name', 'age'])

10.3.2 values():获取所有值

  • 使用 values() 方法返回字典中所有值的视图。

    person = {"name": "aini", "age": 23}
    print(person.values())            # 输出 dict_values(['aini', 23])

10.3.3 items():获取所有键值对

  • 使用 items() 方法返回字典中所有键值对的视图,每个键值对以元组形式表示。

    person = {"name": "aini", "age": 23}
    print(person.items())             # 输出 dict_items([('name', 'aini'), ('age', 23)])

10.3.4 update():更新字典

  • 使用 update() 方法将另一个字典或键值对序列合并到当前字典中,若有重复键则更新值。

    person = {"name": "aini", "age": 23}
    additional_info = {"city": "Shanghai", "age": 24}
    person.update(additional_info)
    print(person)                     # 输出 {'name': 'aini', 'age': 24, 'city': 'Shanghai'}

10.3.5 pop()popitem():删除键值对

  • pop(key):删除并返回指定键的值。
  • popitem():随机删除并返回字典中的最后一个键值对(Python 3.7 以后为删除最后一对)。

    person = {"name": "aini", "age": 23, "city": "Shanghai"}
    age = person.pop("age")           # 删除并返回 'age' 的值
    last_item = person.popitem()      # 随机删除并返回最后一个键值对
    print(age)                        # 输出 23
    print(last_item)                  # 输出 ('city', 'Shanghai')

10.3.6 clear():清空字典

  • 使用 clear() 方法删除字典中的所有键值对,将字典清空。

    person = {"name": "aini", "age": 23}
    person.clear()
    print(person)                     # 输出 {}

10.4 字典的遍历(掌握)

字典遍历是字典操作中非常常见的一部分,通常用于处理每一个键值对。

  • 遍历键

    person = {"name": "aini", "age": 23}
    for key in person.keys():
        print(key)
  • 遍历值

    for value in person.values():
        print(value)
  • 遍历键值对

    for key, value in person.items():
        print(f"{key}: {value}")

10.5 字典的嵌套(掌握)

字典可以包含其他字典,形成嵌套结构,用于表示更复杂的数据关系。

  • 示例

    student = {
        "name": "aini",
        "age": 23,
        "courses": {
            "math": 90,
            "science": 85
        }
    }
    print(student["courses"]["math"])  # 输出 90

10.6 字典生成式(掌握)

字典生成式(Dictionary Comprehension)是一种简洁的生成字典的方式,可以用一行代码创建一个新的字典,常用于数据处理和过滤。

  • 基本语法

    {key_expr: value_expr for item in iterable if condition}
  • 示例

    squares = {x: x**2 for x in range(1, 6)}
    print(squares)                     # 输出 {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

10.7 字典的拷贝(了解)

字典的拷贝分为浅拷贝深拷贝

10.7.1 浅拷贝

  • 浅拷贝只复制字典的第一层元素,嵌套的字典仍然是引用。

    original = {"name": "aini", "courses": {"math": 90}}
    shallow_copy = original.copy()
    shallow_copy["courses"]["math"] = 100
    print(original)                    # 输出 {'name': 'aini', 'courses': {'math': 100}}

10.7.2 深拷贝

  • 深拷贝递归地复制所有层级的元素,使用 copy 模块中的 deepcopy() 实现。

    import copy
    original = {"name": "aini", "courses": {"math": 90}}
    deep_copy = copy.deepcopy(original)
    deep_copy["courses"]["math"] = 100
    print(original)                    # 输出 {'name': 'aini', 'courses': {'math': 90}}

10.8 字典的使用场景(了解)

字典适合用于存储和查找数据的场景,尤其是在以下情况中:

  1. 数据映射:存储键值对关系,如用户信息、配置数据等。
  2. 计数:可以用字典来统计元素出现的频率。
  3. 多层数据结构:当需要存储多层数据时,字典嵌套是常用方式。
  • 示例:计数应用

    words = ["apple", "banana", "apple", "cherry"]
    word_count = {}
    for word in words:
        word_count[word] = word_count.get(word, 0) + 1
    print(word_count)                  # 输出 {'apple': 2, 'banana': 1, 'cherry': 1}

结束

本文标题: Python3学习笔记第十篇--字典

本文链接: https://blog.oyooy.com/archives/40.html

除非另有说明,本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

声明:转载请注明文章来源。

最后修改:2025 年 02 月 02 日
如果觉得我的文章对你有用,请随意赞赏