Python 字典(dict) 合并是有多种方式的,这里分别介绍这几种方法是如何在Python字典中合并的。

使用for循环直接添加

我们可以通过迭代其中一个字典元素,然后将字典元素添加到第二个集合中。

#!/usr/bin/python
# coding=utf-8
d1={'A1': 15, 'B1': 20, 'C1': 30, 'D1': 50}
d2={"X1":200, "Y1":300, "b1":35, "A1":42,"D1":"Hello"}

for k,v in d2.items():
    d1[k]=v

print(d1)
程序运行结果:
{'A1': 42, 'B1': 20, 'C1': 30, 'D1': 'Hello', 'X1': 200, 'Y1': 300, 'b1': 35}

 上面的例子中,我们直接对d2字典遍历并将其元素添加到d1字典中。

使用dict.update()方法合并

看下面的例子。

#!/usr/bin/python
# coding=utf-8
d1={'A1': 15, 'B1': 20, 'C1': 30, 'D1': 50}
d2={"X1":200, "Y1":300, "b1":35, "A1":42,"D1":"Hello"}

d1.update(d2)

print(d1)
输出:
{'A1': 42, 'B1': 20, 'C1': 30, 'D1': 'Hello', 'X1': 200, 'Y1': 300, 'b1': 35}

该方法相对上面的来说简单明了。

使用拆包运算符 ** 合并

字典也可以使用拆包运算符(**)进行合并。它是一个以字典对象为操作数的一元运算符。

它将每个k-v对添加到一个空字典中。如果第二个字典也被解包,则现有key的值将被更新。

#!/usr/bin/python
# coding=utf-8
d1={'A1': 15, 'B1': 20, 'C1': 30, 'D1': 50}
d2={"X1":200, "Y1":300, "b1":35, "A1":42,"D1":"Hello"}

d3={**d1, **d2}
print(d3)

使用ChainMap()方法合并

合并字典的另一种方法是在集合模块中使用ChainMap()函数。ChainMap对象是一个类似dict的对象,用于创建多个字典的单个视图。

#!/usr/bin/python
# coding=utf-8
from collections import ChainMap
	
d1={'A1': 15, 'B1': 20, 'C1': 30, 'D1': 50}
d2={"X1":200, "Y1":300, "b1":35, "A1":42,"D1":"Hello"}

map=ChainMap(d2,d1)
print(map)
d3=dict(map)
print(d3)
输出:
ChainMap({'X1': 200, 'Y1': 300, 'b1': 35, 'A1': 42, 'D1': 'Hello'}, {'A1': 15, 'B1': 20, 'C1': 30, 'D1': 50})
{'X1': 200, 'A1': 42, 'C1': 30, 'D1': 'Hello', 'B1': 20, 'Y1': 300, 'b1': 35}

使用操作符  ( | )合并字典

该方法需要在Python3.9及以上版本中使用,如果您运行的Python版本小于3.9会报错 TypeError: unsupported operand type(s) for |: 'dict' and 'dict'

d1={'A1': 15, 'B1': 20, 'C1': 30, 'D1': 50}
d2={"X1":200, "Y1":300, "b1":35, "A1":42,"D1":"Hello"}

d3=d1 | d2
print(d3) 
1输出:
{'A1': 42, 'B1': 20, 'C1': 30, 'D1': 'Hello', 'X1': 200, 'Y1': 300, 'b1': 35}