考虑到有一个包含多个词典的列表,共享相同的键。
data = [{'count': 3, 'os': 'Windows'},
{'count': 2, 'os': 'Windows'},
{'count': 5, 'os': 'Linux'},
{'count': 1, 'os': 'Linux'}]
如何总结他们的价值观?预期:
data = [{'count': 5, 'os': 'Windows'},{'count': 6, 'os': 'Linux'}]
答案 0 :(得分:6)
import itertools
data = [
{'count': 3, 'os': 'Windows'},
{'count': 2, 'os': 'Windows'},
{'count': 5, 'os': 'Linux'},
{'count': 1, 'os': 'Linux'}
]
results = []
for key, val in itertools.groupby(data, lambda v: v['os']):
count = sum(item['count'] for item in val)
results.append({'count' : count, 'os' : key})
>>> results
>>> [{'count': 5, 'os': 'Windows'}, {'count': 6, 'os': 'Linux'}]
答案 1 :(得分:1)
from collections import defaultdict
sum_dict = defaultdict(int)
for d in dicts: # your dictionaries
for key, value in d.iteritems():
sum_dict[key] += value
当然,您可以将其压缩为单个工作,但不太可读的单行。此外,课程Counter在这里可能很有用。 collections和itertools包含大量非常有用的内容。