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)
任何帮助或建议表示赞赏!谢谢.
您可以使用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}