You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:19:07