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
异常。 它具有“先设置,后获取”的语义。