【Python】字典的快速合并(使用for循环以及内置函数实现)

本文介绍了Python中字典的合并方法,包括使用for循环遍历添加和利用内置的update()函数。对于update(),强调了不能连续使用及不应接收参数的注意事项。推荐在Python 3.5+版本中使用新的简洁合并方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


两个或者多个字典的合并,有时候会用到多个字典合成一个字典.有简单的方法也有复杂的方法… 推荐使用第二种.

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+

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值