You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何一次性合并多个字典并对重复键的值求和?

合并多个字典并对重复键值求和的简洁写法

你需要合并任意数量的字典(甚至是来自生成器的字典),规则是重复键对应的值求和,唯一键保留原值。比如:

a = {"a": 1, "b": 2, "c": 3}
b = {"c": 1, "d": 1}
c = {"a": 2, "b": 2}

合并后要得到:{"a": 3, "b": 4, "c": 4, "d": 1}

之前用sum(Counter(d) for d in (a,b,c))报错,是因为sum默认初始值是0,而int和Counter类型不能直接做加法。

给你一行简洁的解决写法,只需要给sum指定初始值为Counter()即可:

from collections import Counter

# 处理多个字典(生成器也适用)
result = dict(sum((Counter(d) for d in (a, b, c)), Counter()))
print(result)

原理很简单:sum的第二个参数是累加的初始值,指定为空Counter()后,就会从这个空计数器开始,依次把每个字典转成的Counter对象累加起来,最后转成普通字典就能得到想要的结果。如果你的字典来自生成器,直接把(a,b,c)换成生成器表达式就行,不需要提前把所有字典加载到内存,适合处理大量字典的场景。

内容的提问来源于stack exchange,提问作者LoicM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 10:12:11