Skip to content

Python 字典操作详解

字典(Dictionary)是 Python 中一种非常重要且常用的数据结构。它以键值对 (key-value pair) 的形式存储数据,类似于现实生活中的字典,通过查找“键” (key) 来获得对应的“值” (value)。 本教程将带你了解 Python 字典的常见操作,并结合示例代码,帮助你快速上手。

1. 成员检查 (Membership)

in 关键字用于检查某个 是否存在于字典中。

python
>>> d = {"yr": 20, 18: True}
>>> "yr" in d
True

这段代码的意思是,我们创建了一个名为 d 的字典,然后使用 in 关键字来判断键 "yr" 是否存在于字典 d 中。因为 "yr" 确实是 d 的一个键,所以返回 True

in 类似, not in 关键字用于检查某个 是否不存在于字典中。

python
>>> "name" not in d
True

由于字典 d 中没有键 "name",所以 not in 返回 True

小贴士: innot in 操作符只能用来检查键是否存在,不能直接检查值。 如果要检查值是否存在,需要遍历字典的所有值,或者使用其他方法。

2. 字典合并 (Union) (Python 3.9+)

从 Python 3.9 开始,你可以使用 | 运算符来合并两个字典。

python
>>> d = {"yr": 20, 18: True}
>>> n = {"name": "Ed"}
>>> d | n
{'yr': 20, 18: True, 'name': 'Ed'}

这个例子展示了如何使用 | 运算符将字典 dn 合并成一个新的字典。 新的字典包含了 dn 中的所有键值对。

键冲突处理: 如果两个字典有相同的键,右侧字典 (也就是 | 后面的字典) 的值会覆盖左侧字典的值。

python
>>> d = {"yr": 20, 18: True}
>>> n = {"yr": 15, "name": "Ed"}
>>> d | n
{'yr': 15, 18: True, 'name': 'Ed'}

在这个例子中,字典 dn 都有键 "yr"。 合并后的字典中,"yr" 对应的值是 n 中的值 (15),而不是 d 中的值 (20)。

增强赋值合并: |= 运算符可以用来更新字典。它会将右侧字典中的键值对添加到左侧字典中。

python
>>> d = {"book": "Python", "year": 1990}
>>> dnew = {"author": "Guido"}
>>> d |= dnew
>>> d
{'book': 'Python', 'year': 1990, 'author': 'Guido'}

这个例子中,d |= dnew 会将 dnew 中的键值对添加到 d 中。

键冲突处理 (再次强调): 如果两个字典有相同的键,右侧字典的值会覆盖左侧字典的值。

python
>>> d = {"book": "Python", "year": 1990}
>>> dnew = {"author": "Guido", "year": 2000}
>>> d |= dnew
>>> d
{'book': 'Python', 'year': 2000, 'author': 'Guido'}

注意,d"year" 的值从 1990 更新为 2000。

|= 运算符还可以与包含 (键, 值) 对的可迭代对象一起使用,例如列表或元组的列表。

python
>>> d = {"book": "Python", "year": 1990}
>>> inew = [("author", "Guido"), ("year", 2000)]
>>> d |= inew
>>> d
{'book': 'Python', 'year': 2000, 'author': 'Guido'}

在这个例子中,inew 是一个包含元组的列表,每个元组代表一个键值对。 d |= inewinew 中的键值对添加到 d 中。 同样,如果键冲突,右侧的值会覆盖左侧的值。

  • innot in 用于检查键是否存在。
  • | 运算符用于合并字典 (Python 3.9+)。
  • |= 运算符用于更新字典 (Python 3.9+)。
  • 当键冲突时,右侧字典 (或可迭代对象) 的值优先。