“数据收集”中有8个词典,我想将它们添加起来并执行新词典'结果'
正如我的代码所示:
for countres in datagather:
#print (countres)
for key in counts:
results[key]+=countres[key]
在datagather中,如果运行print (countres)
,结果将为:
{'other': 107, 'C4': 1, 'C3': 1, 'A2': 1, 'D3': 1, 'A3': 0, 'C5': 0, 'B3': 2, 'A1': 0, 'B4': 0, 'A4': 0, 'D5': 0, 'B1': 2, 'C1': 1, 'D4': 0, 'B2': 3, 'C2': 7}
{'other': 109, 'C4': 0, 'C3': 3, 'A2': 0, 'D3': 0, 'A3': 1, 'C5': 0, 'B3': 1, 'A1': 0, 'D5': 0, 'A4': 0, 'B4': 1, 'B1': 2, 'C1': 0, 'D4': 0, 'B2': 3, 'C2': 7}
{'other': 116, 'C4': 1, 'C3': 2, 'A2': 0, 'D3': 0, 'A3': 0, 'B4': 0, 'B3': 1, 'C5': 0, 'A1': 0, 'D5': 0, 'A4': 0, 'B1': 0, 'C1': 0, 'D4': 0, 'B2': 3, 'C2': 1}
{'other': 104, 'C4': 0, 'C3': 3, 'A2': 0, 'D3': 1, 'A3': 0, 'C5': 0, 'B3': 2, 'A1': 0, 'B4': 1, 'A4': 0, 'D5': 1, 'B1': 1, 'C1': 0, 'D4': 0, 'B2': 3, 'C2': 7}
{'other': 108, 'C4': 2, 'C3': 2, 'A2': 0, 'D3': 1, 'A3': 0, 'C5': 0, 'B3': 0, 'A1': 0, 'D5': 0, 'A4': 0, 'B4': 0, 'B1': 0, 'C1': 0, 'D4': 0, 'B2': 6, 'C2': 7}
{'other': 105, 'C4': 0, 'C3': 1, 'A2': 0, 'D3': 0, 'A3': 0, 'C5': 0, 'B3': 1, 'A1': 0, 'B4': 0, 'A4': 0, 'D5': 0, 'B1': 2, 'C1': 0, 'D4': 1, 'B2': 4, 'C2': 9}
{'other': 109, 'C4': 1, 'C3': 0, 'A2': 0, 'D3': 1, 'A3': 0, 'C5': 1, 'B3': 0, 'A1': 0, 'D5': 0, 'A4': 0, 'B4': 0, 'B1': 0, 'C1': 0, 'D4': 1, 'B2': 6, 'C2': 7}
{'other': 104, 'C4': 2, 'C3': 3, 'A2': 1, 'D3': 0, 'A3': 1, 'C5': 0, 'B3': 1, 'A1': 0, 'D5': 0, 'A4': 0, 'B4': 0, 'B1': 0, 'C1': 0, 'D4': 0, 'B2': 8, 'C2': 5}
他们都有相同的关键'和不同的值
答案 0 :(得分:2)
这里有几个选项,我认为Counter
是最漂亮的。
defaultdict
import collections
results = collections.defaultdict(int)
for di in datagather:
for key in di:
results[key] += di[key]
print(dict(results))
Counter
:import collections
results = collections.Counter()
for di in datagather:
results.update(di)
print(dict(results))
collections
results = {}
for di in datagather:
for key in di:
if key in results:
results[key] += di[key]
else:
results[key] = di[key]
print(results)
答案 1 :(得分:1)
您可以使用Counter
中的collections
对象,这是一个类似字典的对象,将在更新时求和。
from collections import Counter
counters = (
{'other': 107, 'C4': 1, 'C3': 1, 'A2': 1, 'D3': 1, 'A3': 0, 'C5': 0, 'B3': 2, 'A1': 0, 'B4': 0, 'A4': 0, 'D5': 0, 'B1': 2, 'C1': 1, 'D4': 0, 'B2': 3, 'C2': 7},
{'other': 109, 'C4': 0, 'C3': 3, 'A2': 0, 'D3': 0, 'A3': 1, 'C5': 0, 'B3': 1, 'A1': 0, 'D5': 0, 'A4': 0, 'B4': 1, 'B1': 2, 'C1': 0, 'D4': 0, 'B2': 3, 'C2': 7},
{'other': 116, 'C4': 1, 'C3': 2, 'A2': 0, 'D3': 0, 'A3': 0, 'B4': 0, 'B3': 1, 'C5': 0, 'A1': 0, 'D5': 0, 'A4': 0, 'B1': 0, 'C1': 0, 'D4': 0, 'B2': 3, 'C2': 1},
{'other': 104, 'C4': 0, 'C3': 3, 'A2': 0, 'D3': 1, 'A3': 0, 'C5': 0, 'B3': 2, 'A1': 0, 'B4': 1, 'A4': 0, 'D5': 1, 'B1': 1, 'C1': 0, 'D4': 0, 'B2': 3, 'C2': 7},
{'other': 108, 'C4': 2, 'C3': 2, 'A2': 0, 'D3': 1, 'A3': 0, 'C5': 0, 'B3': 0, 'A1': 0, 'D5': 0, 'A4': 0, 'B4': 0, 'B1': 0, 'C1': 0, 'D4': 0, 'B2': 6, 'C2': 7},
{'other': 105, 'C4': 0, 'C3': 1, 'A2': 0, 'D3': 0, 'A3': 0, 'C5': 0, 'B3': 1, 'A1': 0, 'B4': 0, 'A4': 0, 'D5': 0, 'B1': 2, 'C1': 0, 'D4': 1, 'B2': 4, 'C2': 9},
{'other': 109, 'C4': 1, 'C3': 0, 'A2': 0, 'D3': 1, 'A3': 0, 'C5': 1, 'B3': 0, 'A1': 0, 'D5': 0, 'A4': 0, 'B4': 0, 'B1': 0, 'C1': 0, 'D4': 1, 'B2': 6, 'C2': 7},
{'other': 104, 'C4': 2, 'C3': 3, 'A2': 1, 'D3': 0, 'A3': 1, 'C5': 0, 'B3': 1, 'A1': 0, 'D5': 0, 'A4': 0, 'B4': 0, 'B1': 0, 'C1': 0, 'D4': 0, 'B2': 8, 'C2': 5})
c = Counter()
for d in counters:
c.update(d)
结果:
Counter({'A1': 0,
'A2': 2,
'A3': 2,
'A4': 0,
'B1': 7,
'B2': 36,
'B3': 8,
'B4': 2,
'C1': 1,
'C2': 50,
'C3': 15,
'C4': 7,
'C5': 1,
'D3': 4,
'D4': 2,
'D5': 1,
'other': 862})