python – 尝试在嵌套字典中查找唯一值的总和. (见例子!)

前端之家收集整理的这篇文章主要介绍了python – 尝试在嵌套字典中查找唯一值的总和. (见例子!)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
假设我有这个变量list_1,它是一个字典列表.
每个字典都有一个名为“group”的嵌套字典,其中包含一些信息,包括“name”.

我要做的是总结每个唯一组名的得分.

所以我正在寻找类似于的输出

(陶瓷)总得分=(18)
总成绩(数学)=(20)
(历史)总得分=(5)

我在括号中有上述信息,因为无论列表中的项目数量或表示的唯一组数量如何,我希望此代码能够正常工作.

list_1变量:

list_1 = [

    {"title" : "Painting","score" : 8,"group" : {"name" : "Ceramics","id" : 391}
     },{"title" : "Exam 1","score" : 10,"group" : {"name" : "Math","id" : 554}
     },{"title" : "Clay Model",{"title" : "Homework 3",{"title" : "Report 1","score" : 5,"group" : {"name" : "History","id" : 209}
     },]

我的第一个想法是创建一个新的列表变量并附加每个唯一的组名.这是代码.但是,这有助于最终找到每一个的得分总和吗?

group_names_list = []
for item in list_1:
    group_name = item["group"]["name"]
    if group_name not in group_names_list:
        group_names_list.append(group_name)

这给了我group_names_list的值为:

['Ceramics','Math','History']

任何帮助或建议表示赞赏!谢谢.

解决方法

您可以使用dict跟踪每个名称的分数:
score_dict = dict()
for d in list_1:
    name = d['group']['name']
    if name in score_dict:
        score_dict[name] += d['score']
    else:
        score_dict[name] = d['score']

print(score_dict)

结果:{‘陶瓷’:18,’数学’:20,’历史’:5}

猜你在找的Python相关文章