【发布时间】:2018-06-21 18:11:42
【问题描述】:
我正在尝试使用对列表列表的字典理解来创建字典字典。
列表列表包含学生姓名、作业名称和成绩。例如,数据可能如下所示:
grades_lists = [
['Student', 'Test', 'Assignment', 'Exam'],
['Bella', '80', '90', '100'],
['Sam', '65', '75', '85'],
['Emily', '60', '75', '90'],
]
我想创建一个字典,将学生姓名映射到包含作业名称和成绩的字典。例如:
grades_dicts['Bella']['Test'] == 80
我想要的字典是这样的:
{
'Bella': {'Test': 80, 'Assignment': 90, 'Exam': 100},
'Sam': {'Test': 65, 'Assignment': 75, 'Exam': 85},
'Emily': {'Test': 60, 'Assignment': 75, 'Exam': 90}
}
所以grades_list 中的每一行都变成了一个字典;第一列是学生的姓名,其他列是字典中的值,其键取自grades_list 的第一行。
我一直在尝试使用 dict 理解在字典中生成相应的键和值。像这样的:
grade_dicts = {x[0]:{y:z} for y in grades_lists[0][1:] for x in grades_lists[1:] for z in x[1:]}
但这并不能正确生成所有成绩:
{
'Bella': {'Exam': '100'},
'Emily': {'Exam': '90'},
'Sam': {'Exam': '85'}
}
【问题讨论】:
-
你希望你的字典是什么样子的?
-
... 创建 dictionary 与 list 理解?您使用的是字典理解。
-
您不能创建具有列表理解的字典,不。您正在使用 dictionary 理解。
-
但这并不能正确生成所有成绩。那么会发生什么,产生什么输出?输出应该是什么样子?
-
@AshBellett:请edit您的问题添加所需的信息。
标签: python list dictionary list-comprehension