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

如何从文件生成字典并为同一键添加多个值?

问题解答

当前代码无法实现需求,原因如下:

  • 现有代码里字典的每个键仅存储单个分数值,当同一姓名多次出现时,新分数会直接覆盖旧值,比如vryzhikov最终只会保留最后一次的53,没法保留所有分数。
  • 代码的输出逻辑也不符合预期,只是打印字典结构和输入姓名对应的单个值,没有按要求的格式输出所有分数。

修正后的代码

要实现需求,需要把字典的值设为列表来存储多个分数,最后按指定格式输出:

d = {}
with open("students.txt") as f:
    for line in f:
        parts = line.strip().split()
        name = parts[1]
        score = parts[2]
        # 姓名不在字典里就初始化空列表,存在就追加分数
        if name not in d:
            d[name] = []
        d[name].append(score)

# 按预期格式输出所有记录
for name, scores in d.items():
    # 对分数按数值排序,匹配预期输出的顺序
    sorted_scores = sorted(scores, key=int)
    print(f"{name} {' '.join(sorted_scores)}")

# 保留姓名查询功能
A = input("输入姓名查询分数:")
if A in d:
    print(f"{A} {' '.join(sorted(d[A], key=int))}")
else:
    print(f"{A} 无对应分数记录")

代码说明

  • 用列表存储每个姓名的所有分数,彻底避免覆盖问题。
  • 对分数按数值排序,匹配预期输出中vryzhikov的分数顺序。
  • 最终输出格式完全符合要求,同时保留了姓名查询的功能。

内容的提问来源于stack exchange,提问作者TreeFellOnMe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 20:45:54