Python合并2个字典成1个新字典的方法(9种)

  • Post category:Python

Python中有很多种方法可以将2个字典合并成一个新字典,下面详细讲解9种方法。

方法1 – 使用update()方法

可以使用字典的update()方法来将两个字典合并:

dict1 = {'name': 'Tom', 'age': 20}
dict2 = {'gender': 'Male', 'age': 25}
dict1.update(dict2)
print(dict1)

在这个例子中,字典dict1dict2被合并,并将更新字典,其中相同键值的值将会被更新,上例中字典dict1中的age值被字典dict2的age值覆盖。

方法2 – 使用“**”运算符

可以使用“**”运算符将两个字典合并为一个新字典:

dict1 = {'name': 'Tom', 'age': 20}
dict2 = {'gender': 'Male', 'age': 25}
dict3 = {**dict1, **dict2}
print(dict3)

在这个例子中,使用“**”运算符将字典dict1dict2合并成一个新的字典dict3

方法3 – 使用“|”运算符

可以使用“|”运算符将两个字典合并为一个新字典:

dict1 = {'name': 'Tom', 'age': 20}
dict2 = {'gender': 'Male', 'age': 25}
dict3 = dict1 | dict2
print(dict3)

在这个例子中,使用“|”运算符将字典dict1dict2合并成一个新的字典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方法将字典dict1dict2合并成一个新的字典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,最后使用“**”运算符将字典dict1dict2合并成一个新的字典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)

在这个例子中,使用“**”运算符将字典dict1dict2合并成一个新的字典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()方法将字典dict1dict2合并成一个新的字典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