我有一个并排放置的组合数据列表。如何总结和映射它们的值:
我的列表:
country = ['Australia', 'Australia', 'UAE', 'Australia', 'Israel', 'Ghana', 'Ghana']
views = [1, 2, 4, 5, 77, 5, 2]
虽然我能够并排映射它们,就像这样:
"Australia: 1",
"Australia: 2",
"UAE: 4",
"Australia: 5",
"Israel: 77",
"Ghana: 5",
"Ghana: "2"
我尝试过的事情:
result = dict(zip(country, views))
{'Australia': 5, 'UAE': 4, 'Israel': 77, 'Ghana': 2}
我想从两边获取它们的摘要和总和……
"data": {
"countries": [
"Australia: 8",
"UAE: 4",
"Israel: 77",
"Ghana: 7"]}
答案 0 :(得分:5)
您可以使用defaultdict(int)
来增加计数:
>>> from collections import defaultdict
>>> country = ['Australia', 'Australia', 'UAE', 'Australia', 'Israel', 'Ghana', 'Ghana']
>>> views = [1, 2, 4, 5, 77, 5, 2]
>>> summary = defaultdict(int)
>>> for c, v in zip(country, views):
... summary[c] += v
...
>>> summary
defaultdict(<class 'int'>, {'Australia': 8, 'UAE': 4, 'Israel': 77, 'Ghana': 7})
使用defaultdict(int)
会将初始计数隐式设置为0。这是collections
docs的说明:
将default_factory设置为int可使defaultdict用于计数(例如袋或其他语言的多集)。
第一次遇到字母时,映射中会缺少它,因此default_factory函数调用
int()
以提供默认计数零。然后,递增操作将为每个字母建立计数。
要准确到达“预期输出”:
d = {}; d['data'] = {'countries': dict(summary)}