【发布时间】:2019-04-16 21:28:29
【问题描述】:
假设我有这个变量 list_1,它是一个字典列表。 每个字典都有一个嵌套字典,称为“组”,其中包含一些信息,包括“名称”。
我要做的是将每个唯一组名的分数相加。
所以我正在寻找类似于以下内容的输出:
(陶瓷)总分 = (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}
},
]
我的第一个想法是创建一个新的列表变量并附加每个唯一的组名。这是代码。但这是否有助于最终找到每个分数的总和?
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']
感谢任何帮助或建议!谢谢。
【问题讨论】:
-
尝试在代码读取时完全处理每个项目。也许让
group_names_list成为一个组名字典,然后是一个带有分数的作业列表。当您阅读新项目时,请将[title, score]附加到此列表中。完全处理完输入后,对字典进行第二次循环,将每个组的所有分数相加。所以group_names_list["math"] = [ [ "Exam1",10 ], [ "Homework 3", 10 ] ]
标签: python dictionary nested