gpt4 book ai didi

python - 在特定条件下对嵌套字典列表中的值求和

转载 作者:行者123 更新时间:2023-12-03 21:41:28 25 4
gpt4 key购买 nike

我在下面有一个嵌套字典列表,其中包括给定汽车制造商/型号/年份的汽车销售量。

    cars = 
[{'id': 2, 'car':
{'car_make':'Acura', 'car_model':'TL', 'car_year':2005},'total_sales':589},
{'id': 30, 'car':
{'car_make':'Acura', 'car_model':'TL', 'car_year':2004}, 'total_sales':167},
{'id': 31, 'car':
{'car_make':'Acura', 'car_model':'Integra', 'car_year':2008}, 'total_sales':200},
{'id': 71, 'car':
{'car_make':'BMW', 'car_model':'5 Series', 'car_year':2011},'total_sales':824},
{'id': 72, 'car':
{'car_make':'BMW', 'car_model':'5 Series', 'car_year':2001}, 'total_sales':6}]
我想总结所有年份的总销售额并返回一个包含汽车制造商、型号和总销售额的 total_sales 字典。
    total_sales = {{'car_make': 'Acura', 'car_model': 'TL', 'total_sales': 756},
{'car_make': 'Acura', 'car_model': 'Integra', 'total_sales': 200},
{'car_make': 'BMW', 'car_model': '5 Series', 'total_sales': 830}}
下面是我的代码,其中我遍历嵌套字典并添加总销售额
total_sales = {'car_make':{}}

for car in cars:
if car['car']['car_make'] in total_sales['car_make'] and car['car']['car_model'] in
total_sales['car_model']:
total_sales['total_sales'] = total_sales['total_sales'] + car['total_sales']
else:
total_sales['car_make'] = car['car']['car_make']
total_sales['car_model'] = car['car']['car_model']
total_sales['total_sales'] = car['total_sales']
print(total_sales)
但是,我得到的是每个汽车制造商和车型的最终总销售额,而不是总销售额。
    {'car_make': 'Acura', 'car_model': 'TL', 'total_sales': 589}
{'car_make': 'Acura', 'car_model': 'TL', 'total_sales': 756}
{'car_make': 'Acura', 'car_model': 'Integra', 'total_sales': 200}
{'car_make': 'BMW', 'car_model': '5 Series', 'total_sales': 824}
{'car_make': 'BMW', 'car_model': '5 Series', 'total_sales': 830}
我是 python 的新手,如果有人能解释我做错了什么,我很感激。我还查看了其他主题,包括迭代嵌套字典,但似乎没有什么适合我的情况。

最佳答案

您可以使用 collections.defaultdict :

cars = [{'id': 2, 'car': {'car_make': 'Acura', 'car_model': 'TL', 'car_year': 2005}, 'total_sales': 589}, {'id': 30, 'car': {'car_make': 'Acura', 'car_model': 'TL', 'car_year': 2004}, 'total_sales': 167}, {'id': 31, 'car': {'car_make': 'Acura', 'car_model': 'Integra', 'car_year': 2008}, 'total_sales': 200}, {'id': 71, 'car': {'car_make': 'BMW', 'car_model': '5 Series', 'car_year': 2011}, 'total_sales': 824}, {'id': 72, 'car': {'car_make': 'BMW', 'car_model': '5 Series', 'car_year': 2001}, 'total_sales': 6}]
from collections import defaultdict
d = defaultdict(int)
for i in cars:
d[(i['car']['car_make'], i['car']['car_model'])] += i['total_sales']

r = [{'car_make':a, 'car_model':b, 'total_sales':c} for (a, b), c in d.items()]
输出:
[{'car_make': 'Acura', 'car_model': 'TL', 'total_sales': 756}, 
{'car_make': 'Acura', 'car_model': 'Integra', 'total_sales': 200},
{'car_make': 'BMW', 'car_model': '5 Series', 'total_sales': 830}]

关于python - 在特定条件下对嵌套字典列表中的值求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67300734/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com