Python入门之字典与列表:两段对比代码其中一段无法运行问题咨询
Python代码故障原因说明
核心错误点
第二段代码无法运行的原因是字典访问逻辑错误:
- 第一段代码通过字典的键
"preis"获取车辆价格,符合Python字典的访问规则,可正常运行。 - 第二段代码误用了序列的数字索引
[3]访问字典元素:listefahrzeuge[0]是字典类型,Python的字典是键值对结构,不支持通过数字下标直接获取对应位置的值,运行时会抛出KeyError: 3报错。
修正方案
方案1:沿用字典键访问(推荐)
直接使用键名"preis"获取价格,可读性高且不易出错,修改后代码片段如下:
if listefahrzeuge[0]["preis"] <= max: print(fahrzeug1, "\n") if listefahrzeuge[1]["preis"] <= max: print(fahrzeug2, "\n") if listefahrzeuge[2]["preis"] <= max: print(fahrezeug3, "\n")
方案2:转换为值列表后按索引访问
如果确实需要按位置取值,可以先将字典的所有值转为列表再用数字索引访问:
if list(listefahrzeuge[0].values())[3] <= max: print(fahrzeug1, "\n") # 其余判断逻辑同理修改
额外优化建议
- 不要用
max作为变量名:max是Python内置的求最大值函数,覆盖后会影响后续内置函数的使用,建议改为max_preis这类自定义名称。 - 不要用
eval()处理用户输入:直接用int(input("Geben sie bitte ihren höchst Preis an: "))即可,eval会执行用户输入的任意代码,存在安全风险。 - 统一字典键名:当前
fahrzeug1的年份键为大写开头的Baujahr,其余两个车辆的年份键为小写的baujahr,后续如果要统一访问年份字段会触发报错,建议统一键名格式。
内容的提问来源于stack exchange,提问作者freestylooooo
相关产品推荐
相关产品推荐

