【发布时间】:2018-05-25 07:20:09
【问题描述】:
我有一个字典列表,如下所示:
data = [{'stat3': '5', 'stat2': '4', 'player': '1'},
{'stat3': '8', 'stat2': '1', 'player': '1'},
{'stat3': '6', 'stat2': '1', 'player': '3'},
{'stat3': '3', 'stat2': '7', 'player': '3'}]
我想得到一个嵌套字典,其键是键('player')中的值,其值是聚合统计信息的字典。
输出应该:
{'3': {'stat3': 9, 'stat2': 8, 'player': '3'},
'1': {'stat3': 13, 'stat2': 5, 'player': '1'}}
以下是我的代码:
from collections import defaultdict
result = {}
total_stat = defaultdict(int)
for dict in data:
total_stat[dict['player']] += int(dict['stat3'])
total_stat[dict['player']] += int(dict['stat2'])
total_stat = ([{'player': info, 'stat3': total_stat[info],
'stat2': total_stat[info]} for info in
sorted(total_stat, reverse=True)])
for item in total_stat:
result.update({item['player']: item})
print(result)
但是,我得到了这个:
{'3': {'player': '3', 'stat3': 17, 'stat2': 17},
'1': {'player': '1', 'stat3': 18, 'stat2': 18}}
我怎样才能使它正确?还是有其他方法?
【问题讨论】:
-
附带说明,您似乎想要一个命名元组来存储数据,而不是 dict。
-
'stat3': total_stat[info], 'stat2': total_stat[info]- 当然是同一个值
标签: python python-3.x list dictionary