json - Python3:从 json 格式添加相等的元素
问题描述
Data = [{'Ferrari': 51078}, {'Volvo': 83245, 'Ferrari': 70432, 'Skoda':
29264, 'Lambo': 862},
{'Ferrari': 306415, 'Jeep': 4025, 'Saab': 2708, 'Lexus': 161}, {'Fiat':
27583, 'Maserati': 11030, 'Renault': 3194, 'Volvo': 259, 'Skoda': 164},
{'Ferrari': 2313172, 'Renault': 2475},
{'Volvo': 198671}, {'Volvo': 15762}]
我想把每辆车的数字加在一起,所以我得到每个元素的总数(下面的数字与数据不准确,只是一个例子):法拉利:152455 沃尔沃:13515 斯柯达:1532 兰博:4366 雷诺: 4262 玛莎拉蒂: 2345 雷克萨斯: 235 吉普: 124 萨博: 15
我尝试过 sum(),将其附加到新列表、集合和许多其他潜在的解决方案中,但我就是无法正确解决这个问题。我正在寻找一个不仅适用于我的问题的通用解决方案,因此如果我更改我的数据集以及数字和汽车,它也需要适用于新数据。
我正在使用 Python3。
解决方案
您可以使用defaultdict
. 下面的代码遍历字典列表。然后取出一个随机键值对,直到每个dict为空并对结果求和。
from collections import defaultdict
data = [{'Ferrari': 51078},
{'Volvo': 83245, 'Ferrari': 70432, 'Skoda': 29264, 'Lambo': 862},
{'Ferrari': 306415, 'Jeep': 4025, 'Saab': 2708, 'Lexus': 161},
{'Fiat': 27583, 'Maserati': 11030, 'Renault': 3194, 'Volvo': 259, 'Skoda': 164},
{'Ferrari': 2313172, 'Renault': 2475},
{'Volvo': 198671},
{'Volvo': 15762}]
output = defaultdict(int)
for d in data:
while d:
k, v = d.popitem()
output[k] += v
print(output)
输出
defaultdict(<class 'int'>, {'Ferrari': 2741097,
'Lambo': 862,
'Skoda': 29428,
'Volvo': 297937,
'Lexus': 161,
'Saab': 2708,
'Jeep': 4025,
'Renault': 5669,
'Maserati': 11030,
'Fiat': 27583})
推荐阅读
- java - 根据计算值对使用 spring JPA 分页的 DB 中的行进行排序
- javascript - .map 从 this.state 做出反应
- python - 不断更新 Tkinter 中的标签
- javascript - Vue Array prop 默认值不起作用
- amazon-web-services - toomanyrequests:您已达到拉取率限制。您可以通过身份验证和升级来增加限制
- c++ - PortAudio 中的输出
- python - 如何创建具有 2 列唯一且自动递增的模型?
- c# - DLL 中的 Microsoft.Graph 集合反序列化
- c++ - Clion:进程以退出代码 139 结束
- bash - 带感叹号的条件表达式仅适用于双括号