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

Python中使用用户输入作为字典键触发KeyError的原因分析

问题原因与解决方案

这问题我太熟了!核心就是数据类型不匹配导致的,容我给你掰扯清楚:

为什么会触发KeyError?

你代码里的input()函数有个容易被忽略的特性:它返回的永远是字符串类型。比如你输入数字1,num实际拿到的是字符串"1",而不是整数1。

再看你构建字典etextDict的逻辑:

for book in bookList:
    etextDict[x] = book
    x -= 1

这里的x是整数(从len(bookList)开始递减的整数),所以字典的键全是整数类型。当你用字符串"1"去访问字典时,字典里根本没有这个键,自然就抛出KeyError了。

而你直接赋值num=1的时候,这个num是整数类型,和字典里的键完全匹配,所以能正常输出内容。

怎么解决?

最简单的办法就是把用户输入的字符串转换成整数,用int()函数就行:

num = int(input('Search by ETEXT NO:'))
print(etextDict[num])

如果想让程序更健壮,避免用户输入非数字导致崩溃,可以加个异常处理:

try:
    num = int(input('Search by ETEXT NO:'))
    print(etextDict[num])
except ValueError:
    print("请输入有效的数字编号哦!")
except KeyError:
    print("这个编号对应的书籍不存在~")

额外提醒

Python是强类型语言,字典的键对类型非常敏感——整数1和字符串"1"在字典里是完全不同的两个键。处理用户输入时一定要记住:input()返回的都是字符串,需要根据实际场景转换类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:43:05