python - 汇总和合并列表及其计数
问题描述
我有一个并排放置的组合数据列表。我如何总结和映射他们的价值观:
我的列表:
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"]}
解决方案
您可以使用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
文档的解释:
将 default_factory 设置为 int 使 defaultdict 对计数有用(如其他语言中的 bag 或 multiset)。
当第一次遇到一个字母时,它会从映射中丢失,因此 default_factory 函数调用
int()
以提供默认计数为零。然后递增操作为每个字母建立计数。
要准确获得您的“预期输出”:
d = {}; d['data'] = {'countries': dict(summary)}
推荐阅读
- artifactory - 如何将基于文本的文件上传到 Artifactory,使其不添加 html-header?
- scroll - VS Code 中的快速文本滚动
- android - Azure 移动应用在后台同步
- inheritance - 我可以避免为从接口派生的类编写样板代码吗?
- c# - Azure 的 .NET Core 数据库连接错误
- javascript - 如何停止为值重复键
- python - Draw coordinates on edges of a map
- python - 如何使用 Python 在 Windows 中隐藏和取消隐藏特定文件或文件夹
- python - 你如何在 Python 中从标准输入读取单个字符
- javascript - Jquery on() 方法传递 args 去抖动