2 回答

TA貢獻(xiàn)1877條經(jīng)驗(yàn) 獲得超1個(gè)贊
另一種使用方式collections.Counter:
from collections import Counter
sum(map(Counter, d.values()), Counter())
輸出:
Counter({'a': 5, 'b': 10, 'c': 13, 'd': 10})

TA貢獻(xiàn)1807條經(jīng)驗(yàn) 獲得超9個(gè)贊
您可以使用collections.defaultdict:
from collections import defaultdict
d = {'dicta':{'a':1,'b':2,'c':3}, 'dictb':{'a':2,'b':3,'c':1}, 'dictc':{'a':2,'b':5,'c':9,'d':10}}
_d = defaultdict(int)
for a in d.values():
for c, j in a.items():
_d[c] += j
print(dict(_d))
輸出:
{'a': 5, 'b': 10, 'c': 13, 'd': 10}
使用更短的解決方案itertools.groupby:
from itertools import groupby
r = sorted([i for b in d.values() for i in b.items()], key=lambda x:x[0])
result = {a:sum(c for _, c in b) for a, b in groupby(r, key=lambda x:x[0])}
輸出:
{'a': 5, 'b': 10, 'c': 13, 'd': 10}
添加回答
舉報(bào)