文章目录
两个或者多个字典的合并,有时候会用到多个字典合成一个字典.有简单的方法也有复杂的方法… 推荐使用第二种.
Python中字典的字典有唯一性.键在值和类型完全相同的时候视为同一个键.
所以在下面两种方法中,对相同的键都会进行处理
一:使用for进行遍历添加:
A_dict={'1':'A','2':'B','3':'C'}
B_dict={'4':'D','5':'E','6':'F'}
C_dict = {}
for key,value in A_dict.items():
C_dict[key]=value
for key,value in B_dict.items():
C_dict[key]=value
print C_dict
输出结果:
{'1': 'A', '3': 'C', '2': 'B', '5': 'E', '4': 'D', '6': 'F'}
有相同键的时候:
A_dict={'1':'A','2':'B','3':'C'}
B_dict={'1':'D','5':'E','6':'F'}
C_dict = {}
for key,value in A_dict.items():
C_dict[key]=value
for key,value in B_dict.items():
C_dict[key]=value
print(C_dict)
这样未免麻烦,两个字典也还好,多个字典就比较麻烦了,推荐使用第二种方法来实现字典的快速合并
二:使用Python提供的update():
使用update()更新的时候,会修改update前面的字典的属性,为了保护原有字典的属性,可以新建一个空字典或者使用copy()进行复制.
C_dict = {}
A_dict={'1':'A','2':'B','3':'C'}
B_dict={'4':'D','5':'E','6':'F'}
C_dict.update(A_dict)
C_dict.update(B_dict)
print(C_dict)
输出结果:
{'1': 'A', '2': 'B', '3': 'C', '4': 'D', '5': 'E', '6': 'F'}
有相同的键的时候:
C_dict = {}
A_dict={'1':'A','2':'B','3':'C'}
B_dict={'1':'D','5':'E','6':'F'}
C_dict.update(A_dict)
C_dict.update(B_dict)
print(C_dict)
输出结果:
{'1': 'D', '2': 'B', '3': 'C', '5': 'E', '6': 'F'}
使用update的时候值得注意的地方:
1:update不能直接连续使用:
C_dict = {}
A_dict={'1':'A','2':'B','3':'C'}
B_dict={'4':'D','5':'E','6':'F'}
C_dict.update(A_dict).update(B_dict)
print(C_dict)
报错信息:
AttributeError: 'NoneType' object has no attribute 'update'
2:不能使用参数进行接收
只使用参数接收一次的时候:
C_dict = {}
A_dict={'1':'A','2':'B','3':'C'}
B_dict={'4':'D','5':'E','6':'F'}
C_dict = C_dict.update(A_dict)
# C_dict = C_dict.update(B_dict) # 注释掉
print(C_dict)
输出信息:
None
多次使用参数接收的时候:
C_dict = {}
A_dict={'1':'A','2':'B','3':'C'}
B_dict={'4':'D','5':'E','6':'F'}
C_dict = C_dict.update(A_dict)
C_dict = C_dict.update(B_dict)
print(C_dict)
输出信息:
Traceback (most recent call last):
File "E:/Pycharm/tcp/测试字典合并.py", line 15, in <module>
C_dict = C_dict.update(B_dict)
AttributeError: 'NoneType' object has no attribute 'update'
所以不要使用参数进行接收.就和list的append一样.
推荐使用第二种,第一种很常见,但是代码量略多.
三:2018-12-06更新
今天看到了一个在**Python 3.5+**以后可以使用的方法,很简介
a_dict = {'a':1,'b':2}
b_dcit = {'a':2,'c':2}
d_dict = {**a_dict,**b_dcit}
print(d_dict)
输出结果:
{'a': 2, 'b': 2, 'c': 2, 'd': 3}
局限性在只适用于Python 3.5+