在 Python 中,字典是一个可变的数据类型,经常需要将多个字典合并成一个字典。合并字典的方式有多种,今天我们将学习几种常见的方法。
1. 使用 update()
方法合并字典
update()
方法可以用来将一个字典中的键值对添加到另一个字典中。如果目标字典已经包含了相同的键,原有的键值会被更新。
示例:
python">dict1 = {'name': 'Alice', 'age': 25}
dict2 = {'city': 'New York', 'country': 'USA'}# 使用 update() 合并字典
dict1.update(dict2)# 打印合并后的字典
print(dict1)
输出:
{'name': 'Alice', 'age': 25, 'city': 'New York', 'country': 'USA'}
2. 使用字典解包(**
)合并字典
在 Python 3.5 及以后的版本中,使用字典解包(**
)是一种非常简洁且直观的方式来合并字典。你可以将多个字典的内容解包到一个新的字典中。
示例:
python">dict1 = {'name': 'Alice', 'age': 25}
dict2 = {'city': 'New York', 'country': 'USA'}# 使用字典解包合并字典
merged_dict = {**dict1, **dict2}# 打印合并后的字典
print(merged_dict)
输出:
{'name': 'Alice', 'age': 25, 'city': 'New York', 'country': 'USA'}
3. 使用 |
运算符合并字典(Python 3.9+)
从 Python 3.9 版本开始,可以使用 |
运算符来合并字典。这种方法简洁且直观。
示例:
python">dict1 = {'name': 'Alice', 'age': 25}
dict2 = {'city': 'New York', 'country': 'USA'}# 使用 | 运算符合并字典
merged_dict = dict1 | dict2# 打印合并后的字典
print(merged_dict)
输出:
{'name': 'Alice', 'age': 25, 'city': 'New York', 'country': 'USA'}
4. 使用 collections.ChainMap
合并字典
ChainMap
是 collections
模块中的一个类,它可以将多个字典合并成一个视图,提供一个合并后的字典视图,但并不会创建新的字典。如果字典中有相同的键,ChainMap
会返回第一个字典中的值。
示例:
python">from collections import ChainMapdict1 = {'name': 'Alice', 'age': 25}
dict2 = {'city': 'New York', 'country': 'USA'}# 使用 ChainMap 合并字典
merged_dict = ChainMap(dict1, dict2)# 打印合并后的字典
print(dict(merged_dict))
输出:
{'name': 'Alice', 'age': 25, 'city': 'New York', 'country': 'USA'}
5. 小结
- 使用
update()
方法可以将一个字典的内容添加到另一个字典中,适用于更新目标字典。 - 使用字典解包(
**
)提供了一种简洁的字典合并方式,适合在 Python 3.5 及以上版本中使用。 - 从 Python 3.9 开始,可以使用
|
运算符直接合并字典,这是一个非常简洁和易懂的方法。 ChainMap
提供了一个合并字典的视图,适合处理多个字典的合并,但不会创建新的字典。
6. 课后练习
练习 1:使用 update()
方法合并字典
给定字典 {'name': 'Bob', 'age': 30}
和 {'city': 'Los Angeles', 'job': 'Engineer'}
,使用 update()
方法合并这两个字典,并打印结果。
练习 2:使用字典解包合并字典
给定字典 {'name': 'Charlie', 'age': 25}
和 {'city': 'Chicago', 'country': 'USA'}
,使用字典解包将这两个字典合并成一个新的字典。
练习 3:使用 |
运算符合并字典
给定字典 {'name': 'David', 'age': 35}
和 {'city': 'Paris', 'job': 'Designer'}
,使用 |
运算符合并这两个字典,并打印合并后的字典。
练习 4:使用 ChainMap
合并字典
给定字典 {'name': 'Eva', 'age': 28}
和 {'city': 'Berlin', 'country': 'Germany'}
,使用 ChainMap
合并字典并打印合并后的字典。
练习 5:合并多个字典
给定字典 dict1 = {'name': 'Frank'}
, dict2 = {'age': 40}
, dict3 = {'city': 'London'}
,使用字典解包或 update()
方法合并所有字典。