【发布时间】:2018-07-09 09:56:22
【问题描述】:
我有这种格式的数据:
d = [
{'key': '2018-05-10', 'vals': {'Clicks': 229, 'Link Clicks': 210}},
{'key': '2018-05-11', 'vals': {'Clicks': 365, 'Link Clicks': 379}},
{'key': '2018-05-10', 'vals': {'Clicks': 139, 'Link Clicks': 11}},
{'key': '2018-05-11', 'vals': {'Clicks': 1348, 'Link Clicks': 73}},
]
即它有多个具有相同key的条目
我希望它对它进行分组,以便将 Clicks 和 Link Clicks 汇总为共同日期:
所以输出应该是这样的:
d = [
{'key': '2018-05-10', 'vals': {'Clicks': 368, 'Link Clicks': 221}},
{'key': '2018-05-11', 'vals': {'Clicks': 1713, 'Link Clicks': 452}},
]
我想到了首先使用 defaultdict 将值组合在一起:
from collections import defaultdict
dd = defaultdict(list)
for i in d:
dd[i['key']].append(i['vals'])
给出以下输出:
{ 2018-05-10': [
{'Clicks': 229, 'Link Clicks': 210},
{'Clicks': 139, 'Link Clicks': 11}
],
'2018-05-11': [
{'Clicks': 365, 'Link Clicks': 379},
{'Clicks': 1348, 'Link Clicks': 73}
]}
现在我想我可以使用Counter 来总结价值,但我知道该怎么做。此外,键的名称,即 Clicks 和 Link Clicks 可能会更改和 vals 可以有超过 2 个条目。
不使用defaultdict也可以吗?有没有更好的方法?
注意:我认为使用这种 defaultdict 方法并不好,因为我总是希望数据按日期排序,一旦我使用 dict 我就会失去顺序
【问题讨论】:
标签: python dictionary counter defaultdict