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

Jan*_*ith 6 python dictionary nested

假设我有这个变量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",
     "score" : 10,
     "group" : {"name" : "Ceramics",
                "id" : 391}
     },

    {"title" : "Homework 3",
     "score" : 10,
     "group" : {"name" : "Math",
                "id" : 554}
     },

    {"title" : "Report 1",
     "score" : 5,
     "group" : {"name" : "History",
                "id" : 209}
     },

    ]
Run Code Online (Sandbox Code Playgroud)

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

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)
Run Code Online (Sandbox Code Playgroud)

这给了我group_names_list的值为:

['Ceramics','Math','History']
Run Code Online (Sandbox Code Playgroud)

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

Jac*_*IRR 7

您可以使用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)
Run Code Online (Sandbox Code Playgroud)

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