【发布时间】:2019-01-21 19:40:17
【问题描述】:
我是 python 新手,正在学习字典。我有一个学生名单及其成绩,我需要将每个学生映射到他的成绩以进行特定考试。
我正在使用 for 循环遍历每个学生的姓名,然后使用另一个循环遍历考试成绩。我的代码在下面,但由于某种原因,我没有得到想要的结果。我希望有人能指出我搞砸的地方。谢谢。
students = {'Student1': {'Exam1': 80, 'Exam2': 80, 'Exam3': 70},
'Student2': {'Exam1': 90, 'Exam2': 70, 'Exam3': 65}}
student_grades = {}
for student, exam in students.items():
student_grades = {student}
for key,value in exam.items():
student_grades.update({key + ':', value})
print(student_grades)
#This is what I'd like my result to look like:
({'Student1': {'Exam1': 80}}, {'Student1': {'Exam2': 80}}, {'Student1': {'Exam3': 70}}, {'Student2': {'Exam1': 90}}, {'Student2': {'Exam2': 70}}, {'Student2': {'Exam2': 65}})
#But this is what it actually looks like:
{65, 'Student2', 90, 70, 'Exam3:', 'Exam1:', 'Exam2:'}
【问题讨论】:
-
集合和字典都使用花括号
{},但它们是非常不同的东西。您要求更新学生成绩的方式实际上是在制作一个集合,其中一些字符串与:连接。您不应该按字面意思输入该符号。您可能希望查看有关字典的基本教程 -
你已经有了一个很好的紧凑格式的结果,为什么要为每个考试创建单独的字典?
标签: python dictionary