Python中如何将多名学生信息存入字典?解决仅保留最后一条数据问题
问题解答:学生信息存储丢失的问题
Hey there! Welcome to the community and to Python programming—glad you're here 😊
你遇到的问题非常典型,核心原因是:每次循环都会重新创建一个空的students字典,之前循环中添加的学生数据会被新的空字典完全覆盖,所以程序结束后只能保留最后一名学生的信息。
下面给你两种常见的解决方案,你可以根据需求选择:
方案1:用列表存储多个学生字典
这种方式会把每个学生的信息(姓名+成绩)作为单独的字典,再统一存入一个列表中,能完整保留所有学生的数据,也支持重名的情况:
# 先在循环外部创建空列表,用来存储所有学生信息 students = [] x = 0 while x < 5: x = x + 1 name = input("Please give me the name of a student: ") grade = float(input("Also I would like the grade of this student: ")) # 创建单个学生的信息字典 student_info = {'name': name, 'grade': grade} # 将学生字典添加到列表中 students.append(student_info) print(students)
运行后你会得到一个包含5个字典的列表,每个字典对应一名学生的信息。
方案2:用姓名作为键的字典存储成绩
如果学生姓名不会重复,这种方式更方便后续查询成绩,直接通过姓名就能获取对应的分数:
# 循环外部创建空字典,键为学生姓名,值为对应成绩 students = {} x = 0 while x < 5: x = x + 1 name = input("Please give me the name of a student: ") grade = float(input("Also I would like the grade of this student: ")) # 直接将姓名和成绩存入字典 students[name] = grade print(students)
小优化:用for循环替代while循环
Python中处理固定次数的循环,用for循环会更简洁易懂,比如把上面的方案1改成for循环:
students = [] # 循环5次,每次处理一名学生 for _ in range(5): name = input("Please give me the name of a student: ") grade = float(input("Also I would like the grade of this student: ")) students.append({'name': name, 'grade': grade}) print(students)
希望这些修改能帮你解决问题,有其他Python相关的疑问随时提问哦!
内容的提问来源于stack exchange,提问作者Domna
相关产品推荐
相关产品推荐

