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。
答案 0 :(得分:0)
您可以使用defaultdict
。下面的代码遍历字典列表。然后取出一个随机的键值对,直到每个字典为空,然后对结果求和。
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})