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

输入专辑名称后遍历字典执行键值比较时出现KeyError的问题咨询

问题排查与解决

错误原因

  • 变量覆盖+键类型错误:你先用a存储输入的专辑名,随后又用for a in album_rating.items()循环,items()返回的是(专辑名, 评分)的元组,这时候a被替换成了元组(比如报错里的('Black in Black', 8.5)),再用这个元组去字典里找键,自然找不到,触发KeyError。
  • 语法错误:Python的循环关键字是小写for,你写的For会被识别为未知名称,实际运行时会先报这个错。
  • 逻辑偏离需求:你的需求是输入单个专辑名并判断其评分,没必要遍历整个字典,遍历会把所有专辑都判断一遍,不符合预期。

修复后的代码(符合需求的最优写法)

album_rating={"Black in Black":8.5,"Believer":6,"SmackTac":7,"You":9}
album_name = input("Enter the name:")

# 先检查输入的专辑是否存在
if album_name in album_rating:
    rating = album_rating[album_name]
    if rating > 8:
        print("This album is Amazing!")
    else:        
        print("Try a different album")
else:
    print("This album isn't in the rating list!")
print("Welcome")

代码说明

  • 把输入变量改名为album_name,避免和循环变量冲突(这里直接去掉了不必要的遍历)。
  • 增加专辑存在性判断,防止用户输入不存在的名称时再次触发KeyError。
  • 完全贴合需求:输入单个专辑名,直接获取对应评分并判断。

可选:遍历实现的写法(不推荐,仅作演示)

如果一定要用遍历方式查找目标专辑,可以这么写,但效率不如直接通过键访问:

album_rating={"Black in Black":8.5,"Believer":6,"SmackTac":7,"You":9}
target_album = input("Enter the name:")

for album, rating in album_rating.items():
    if album == target_album:
        print("This album is Amazing!" if rating > 8 else "Try a different album")
        break
else:
    print("This album isn't in the rating list!")
print("Welcome")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 17:40:29