Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python3:从json格式将相等的元素添加到一起_Json_Python 3.x_List - Fatal编程技术网

Python3:从json格式将相等的元素添加到一起

Python3:从json格式将相等的元素添加到一起,json,python-3.x,list,Json,Python 3.x,List,我想把每辆车的数字加在一起,所以我得到了每个元素的总数(下面的数字与数据不符,只是一个例子): 法拉利:152455 沃尔沃:13515 斯柯达:1532 兰博:4366 雷诺:4262 玛莎拉蒂:2345 雷克萨斯:235 吉普车:124 萨博:15 我尝试过sum(),将它附加到新列表、集合和许多其他可能的解决方案中,但我无法正确地实现这一点。我正在寻找一个不仅适用于我的问题的通用解决方案,因此,如果我更改了数据集,从而更改了数字和车辆,它还需要对新数据起作用 我正在使用Python3。您可

我想把每辆车的数字加在一起,所以我得到了每个元素的总数(下面的数字与数据不符,只是一个例子): 法拉利:152455 沃尔沃:13515 斯柯达:1532 兰博:4366 雷诺:4262 玛莎拉蒂:2345 雷克萨斯:235 吉普车:124 萨博:15

我尝试过sum(),将它附加到新列表、集合和许多其他可能的解决方案中,但我无法正确地实现这一点。我正在寻找一个不仅适用于我的问题的通用解决方案,因此,如果我更改了数据集,从而更改了数字和车辆,它还需要对新数据起作用


我正在使用Python3。

您可以使用
defaultdict
。下面的代码遍历dict列表。然后取出一个随机的键值对,直到每个dict为空,并将结果相加

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}]
输出

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(,{'Ferrari':2741097,
兰博:862,
斯柯达:29428,
“沃尔沃”:297937,
“雷克萨斯”:161,
“萨博”:2708,
吉普:4025,
“雷诺”:5669,
玛莎拉蒂:11030,
“菲亚特”:27583})

谢谢,它工作得非常好!起初,我对行
k,v=d.popitem()
有点困惑,但现在我终于明白了这一点。
defaultdict(<class 'int'>, {'Ferrari': 2741097,
                            'Lambo': 862,
                            'Skoda': 29428,
                            'Volvo': 297937,
                            'Lexus': 161,
                            'Saab': 2708,
                            'Jeep': 4025,
                            'Renault': 5669,
                            'Maserati': 11030,
                            'Fiat': 27583})