合并字典并添加值

时间:2013-03-28 08:58:27

标签: python

我想要组合几个词典,这样如果一个键在多个词典中,则将值加在一起。例如:

d1 = {1: 10, 2: 20, 3: 30}
d2 = {1: 1, 2: 2, 3: 3}
d3 = {0: 0}

merged = {1: 11, 2: 22, 3: 33, 0: 0}

在Python中执行此操作的最佳方法是什么?我正在看defaultdict并试图找出一些东西。我正在使用Python 2.6。

3 个答案:

答案 0 :(得分:8)

使用defaultdict

>>> d = defaultdict(int)
>>> for di in [d1,d2,d3]:
...   for k,v in di.items():
...     d[k] += v
...
>>> dict(d)
{0: 0, 1: 11, 2: 22, 3: 33}
>>>

答案 1 :(得分:3)

使用最多的python标准函数和库:

dlst = [d1, d2, d3]
for i in dlst:
    for x,y in i.items():
        n[x] = n.get(x, 0)+y

使用if-else并使用默认值dict.get,而非使用0检查,而不是简单易行。

答案 2 :(得分:2)

没有导入任何东西。

d4={}
for d in [d1,d2,d3]:
    for k,v in d.items():
        d4.setdefault(k,0)
        d4[k]+=v
print d4

输出:

{0: 0, 1: 11, 2: 22, 3: 33}