Python字典不支持+运算符,但可通过|(3.9+)、{d1,d2}或update()实现键值覆盖合并;数值型可用Counter累加;自定义逻辑需手动遍历处理。

Python 字典本身不支持直接用 + 相加(会报 TypeError),但有多种实用方式实现“合并”或“累加”效果,关键看你想怎么处理重复键:
用 update() 或 |(合并,后值覆盖前值)
这是最常见的“相加”理解——把两个字典合在一起,相同 key 的值以右边字典为准:
- Python 3.9+ 推荐用管道符
|(返回新字典,原字典不变):
d1 = {'a': 1, 'b': 2}
d2 = {'b': 3, 'c': 4}
result = d1 | d2 # {'a': 1, 'b': 3, 'c': 4}
- 兼容旧版本可用
update()(修改原字典)或{**d1, **d2}(解包生成新字典):
d1 = {'a': 1, 'b': 2}
d2 = {'b': 3, 'c': 4}
result = {**d1, **d2} # 同样是 {'a': 1, 'b': 3, 'c': 4}
数值型字典按 key 相加(同 key 值相加,非覆盖)
如果字典的 value 都是数字,你希望相同 key 的值累加(比如统计计数),可以用 collections.Counter:
from collections import Counterd1 = {'a': 1, 'b': 2} d2 = {'b': 3, 'c': 4} result = dict(Counter(d1) + Counter(d2)) # {'a': 1, 'b': 5, 'c': 4}
注意:Counter 只适合数值类型;非数字 value 会出错。
传媒企业网站系统使用热腾CMS(RTCMS),根据网站板块定制的栏目,如果修改栏目,需要修改模板相应的标签。站点内容均可在后台网站基本设置中添加。全站可生成HTML,安装默认动态浏览。并可以独立设置SEO标题、关键字、描述信息。源码包中带有少量测试数据,安装时可选择演示安装或全新安装。如果全新安装,后台内容充实后,首页才能完全显示出来。(全新安装后可以删除演示数据用到的图片,目录在https://
立即学习“Python免费学习笔记(深入)”;
通用手动累加(支持任意类型 + 自定义逻辑)
想更灵活控制(比如列表拼接、字符串连接、取最大值等),推荐用循环或字典推导:
d1 = {'a': [1], 'b': 2}
d2 = {'a': [2, 3], 'b': 10}
比如对 list 类型做 extend,数值做相加
from collections import defaultdict
merged = defaultdict(lambda: 0) # 默认值为 0,适合数值累加
for d in [d1, d2]:
for k, v in d.items():
if isinstance(v, list):
merged[k] = merged.get(k, []) + v
else:
merged[k] += v
结果:{'a': [1, 2, 3], 'b': 12}
小提醒
d1 + d2会直接报错,别试- 用
|或{**d1, **d2}是浅合并,嵌套字典不会递归合并 - 需要深度合并?得自己写递归函数或用第三方库如
deepmerge
基本上就这些。选哪种方式,取决于你字典里存的是什么,以及遇到重复 key 时想怎么处理。










