Python中有很多种方法可以将2个字典合并成一个新字典,下面详细讲解9种方法。
方法1 – 使用update()方法
可以使用字典的update()
方法来将两个字典合并:
dict1 = {'name': 'Tom', 'age': 20}
dict2 = {'gender': 'Male', 'age': 25}
dict1.update(dict2)
print(dict1)
在这个例子中,字典dict1
和dict2
被合并,并将更新字典,其中相同键值的值将会被更新,上例中字典dict1
中的age值被字典dict2
的age值覆盖。
方法2 – 使用“**”运算符
可以使用“**”运算符将两个字典合并为一个新字典:
dict1 = {'name': 'Tom', 'age': 20}
dict2 = {'gender': 'Male', 'age': 25}
dict3 = {**dict1, **dict2}
print(dict3)
在这个例子中,使用“**”运算符将字典dict1
和dict2
合并成一个新的字典dict3
。
方法3 – 使用“|”运算符
可以使用“|”运算符将两个字典合并为一个新字典:
dict1 = {'name': 'Tom', 'age': 20}
dict2 = {'gender': 'Male', 'age': 25}
dict3 = dict1 | dict2
print(dict3)
在这个例子中,使用“|”运算符将字典dict1
和dict2
合并成一个新的字典dict3
。
方法4 – 使用collections模块中的ChainMap方法
可以使用collections模块中的ChainMap方法将两个字典合并为一个新字典:
from collections import ChainMap
dict1 = {'name': 'Tom', 'age': 20}
dict2 = {'gender': 'Male', 'age': 25}
dict3 = ChainMap(dict1, dict2)
print(dict3)
在这个例子中,使用collections模块中的ChainMap方法将字典dict1
和dict2
合并成一个新的字典dict3
。
方法5 – 使用dict()方法和zip()函数
可以使用dict()方法和zip()函数将两个字典合并为一个新字典:
keys = ['name', 'age', 'gender']
values1 = ['Tom', 20, 'Male']
values2 = ['Jerry', 25, 'Female']
dict1 = dict(zip(keys, values1))
dict2 = dict(zip(keys, values2))
dict3 = {**dict1, **dict2}
print(dict3)
在这个例子中,使用dict()方法和zip()函数将keys和values1列表合并为一个字典dict1
,同样将keys和values2列表合并为一个字典dict2
,最后使用“**”运算符将字典dict1
和dict2
合并成一个新的字典dict3
。
方法6 – 使用dict()方法和字典推导式
可以使用dict()方法和字典推导式将两个字典合并为一个新字典:
dict1 = {'name': 'Tom', 'age': 20}
dict2 = {'gender': 'Male', 'age': 25}
dict3 = {key: value for d in [dict1, dict2] for key, value in d.items()}
print(dict3)
在这个例子中,使用字典推导式将字典列表[dict1, dict2]
中的所有键值对合并为一个新的字典dict3
。
方法7 – 使用字典推导式和items()
可以使用字典推导式和items()方法将两个字典合并为一个新字典:
dict1 = {'name': 'Tom', 'age': 20}
dict2 = {'gender': 'Male', 'age': 25}
dict3 = {**dict1, **dict2}
print(dict3)
在这个例子中,使用“**”运算符将字典dict1
和dict2
合并成一个新的字典dict3
。
方法8 – 使用字典推导式和keys()
可以使用字典推导式和keys()方法将两个字典合并为一个新字典:
dict1 = {'name': 'Tom', 'age': 20}
dict2 = {'gender': 'Male', 'age': 25}
dict3 = {key: dict1.get(key, dict2.get(key)) for key in set(dict1) | set(dict2)}
print(dict3)
在这个例子中,使用字典推导式和keys()方法将字典dict1
和dict2
合并成一个新的字典dict3
。
方法9 – 使用函数式编程reduce()方法
可以使用函数式编程的reduce()方法将两个字典合并为一个新字典:
from functools import reduce
dict1 = {'name': 'Tom', 'age': 20}
dict2 = {'gender': 'Male', 'age': 25}
dict3 = reduce(lambda d1,d2: {**d1,**d2}, [dict1, dict2])
print(dict3)
在这个例子中,使用reduce()方法将字典列表[dict1, dict2]
中的所有键值对合并为一个新的字典dict3
。