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

Python遍历字典替换成绩为等级时报TypeError: '>='不支持str与int比较

报错原因分析

核心错误是你使用了两层不必要的嵌套循环,且循环过程中直接修改原字典的value类型,触发了类型不匹配的比较错误,具体拆解如下:

  • 逻辑设计错误:你不需要两层循环。外层遍历字典的键,内层又遍历所有字典值,会导致每个键的value被多次覆盖,最终所有键的value都会被设置为最后一个成绩对应的等级,完全不符合需求。
  • 类型错误触发原因:你在循环过程中直接把原字典的int类型成绩替换为字符串类型的等级。第一次外层循环处理第一个键时,内层循环就会把该键对应的值改为字符串,当第二轮外层循环启动,再次遍历adict.values()时,列表里已经存在字符串类型的value,执行i >= 90的判断时,就会出现字符串与整型比较的类型错误,也就是你收到的报错。
修复后的代码

你只要遍历字典的键值对即可,不需要嵌套循环:

def letter_grades(adict):
    """
    Parameter adict: the dictionary of grades
    Precondition: adict is a dictionary with string keys, int values
    """
    for name, score in adict.items():
        if score >= 90:
            adict[name] = 'A'
        elif score >= 80:
            adict[name] = 'B'
        elif score >= 70:
            adict[name] = 'C'
        elif score >= 60:
            adict[name] = 'D'
        else:
            adict[name] = 'F'
    return adict

如果你不想修改输入的原字典,可以新建字典存储结果后返回,避免对输入参数产生副作用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 15:57:03