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

代码运行报KeyError: 0错误,求助可行的修复方案

解决KeyError: 0的问题

嘿,我一眼就揪出问题所在啦!你的student_scores字典里的键是字符串类型的'0'和'1',但你在循环里用整数i(0、1)去访问student_scores[i]——字典里根本没有整数0这个键,这不就直接抛出KeyError了嘛!

咱们来一步步把问题搞定:

问题核心

当你写for v in student_scores时,Python默认会遍历字典的键(也就是'0'、'1'),但你却用整数计数器i去当键取值,类型不匹配肯定找不到对应的键值对。

修复方案1:直接遍历字典键值对(最简洁)

不用额外的计数器i,直接用items()方法同时拿到键和值,代码逻辑更清晰:

student_scores = {'0':65.0, '1':54.7}
student_names = ['Alice', 'Bob']  # 假设这是你的学生名单
average_score = 66.0
above_avg = []

# 遍历键值对,同时通过索引对应student_names
for idx, (key, score) in enumerate(student_scores.items()):
    if score >= average_score:
        above_avg_check = "{} {}".format(student_names[idx], score)
        above_avg.append(above_avg_check)
        print(above_avg_check)

修复方案2:适配原思路,转换计数器类型

如果你想保留原来用计数器的逻辑,只需要把整数i转成字符串再当键用就行:

student_scores = {'0':65.0, '1':54.7}
student_names = ['Alice', 'Bob']
average_score = 66.0
above_avg = []
i = 0
for v in student_scores:
    # 把i转成字符串,匹配字典的键类型
    if student_scores[str(i)] >= average_score:
        above_avg_check = "{} {}".format(student_names[i], student_scores[str(i)])
        above_avg.append(above_avg_check)
        print(above_avg_check)
    i += 1

额外小提醒

其实字典在Python 3.7之前是无序的(3.7+才保留插入顺序),如果你的student_names和student_scores是严格按顺序对应的,更推荐用列表存储学生信息,比如students = [('Alice',65.0), ('Bob',54.7)],这样遍历起来更不容易踩类型匹配的坑哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:16:38