Skip to content

Python字典更新:添加、修改和扩展

字典是 Python 中非常重要的数据结构,用于存储键值对。 本节将介绍如何向字典中添加新的键值对,以及如何更新字典中已有的值。 我们会介绍三种主要方法:索引运算符 []update() 方法和 setdefault() 方法。

使用索引运算符 []

索引运算符 [] 是一种直接且常用的方法,可以用来添加或更新字典中的元素。

  • 添加元素: 如果键 x 不存在于字典 d 中,则 d[x] = y 会将键值对 x: y 添加到字典 d 中。
  • 更新元素: 如果键 x 已经存在于字典 d 中,则 d[x] = y 会将键 x 对应的值更新为 y。 这会覆盖原有的值。
python
>>> d = {"yr": 20, 18: True}
>>> d["name"] = 'Ed'  # 添加键值对 'name': 'Ed'
>>> d
{'yr': 20, 18: True, 'name': 'Ed'}

>>> d["name"] = 'Py'  # 更新键 'name' 对应的值为 'Py'
>>> d
{'yr': 20, 18: True, 'name': 'Py'}

使用 update() 方法

update() 方法可以一次性添加多个键值对,或者更新已有的键值对。 它非常灵活,可以接受多种形式的参数:

1. 传入另一个字典

将另一个字典中的所有键值对添加到当前字典中。 如果有相同的键,则更新为传入字典中的值。

python
>>> d = {"yr": 20, 18: True}
>>> d.update({"name": 'Ed'})  # 添加键值对 'name': 'Ed'
>>> d
{'yr': 20, 18: True, 'name': 'Ed'}

>>> d.update({"yr": 15, 18: False}) # 更新 'yr' 和 '18' 对应的值
>>> d
{'yr': 15, 18: False, 'name': 'Ed'}

2. 传入 (键, 值) 对的序列 (例如:列表或元组)

传入一个包含键值对的列表或元组,每个键值对都表示为一个元组 (key, value)

python
>>> d = {"yr": 20, 18: True}
>>> d.update([("name", 'Ed'),
...            ('yr', 15)])  # 添加 'name': 'Ed' 并更新 'yr': 15
>>> d
{'yr': 15, 18: True, 'name': 'Ed'}

3. 传入关键字参数

使用关键字参数的形式, key=value, 方便直观。

python
>>> d = {"yr": 20, 18: True}
>>> d.update(name="Ed", yr=15)  # 添加 'name': 'Ed' 并更新 'yr': 15
>>> d
{'yr': 15, 18: True, 'name': 'Ed'}

使用 setdefault() 方法

setdefault(key[, default]) 方法用于获取与键 key 对应的值。

  • 如果键存在: 返回键 key 对应的值,字典不会被修改。
  • 如果键不存在: 将键 key 添加到字典中,并将其值设置为 default (如果提供了 default 值),或者设置为 None (如果没有提供 default 值)。然后返回新设置的值。
python
>>> d = {"yr": 20, 18: True}
>>> d.setdefault("name") # 键 "name" 不存在,插入 None 并返回 None
>>> d
{'yr': 20, 18: True, 'name': None}

>>> d = {"yr": 20, 18: True}
>>> d.setdefault("name", "Ed") # 键 "name" 不存在,插入 'Ed' 并返回 'Ed'
'Ed'
>>> d
{'yr': 20, 18: True, 'name': 'Ed'}

>>> d.setdefault("yr", 25) # 键 'yr' 存在,返回现有值 20,不修改字典
20
>>> d
{'yr': 20, 18: True, 'name': 'Ed'}

setdefault() 方法通常用于在访问字典元素之前,确保该键存在于字典中,并设置一个默认值。 这样可以避免 KeyError 异常。 它具有“先设置,后获取”的语义。