我有几个我想组合的字典,这样如果一个键在多个字典中,则将值加在一起。例如:
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。
我有几个我想组合的字典,这样如果一个键在多个字典中,则将值加在一起。例如:
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。
使用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}
>>>
使用最多的 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
简单易行。
无需导入任何东西。.
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}