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

从字典列表值提取元素:自定义车辆管理代码报错求助

解决你的车辆信息提取问题

嘿,我瞅见你在提取车辆属性的时候踩了个小坑,咱们来把它捋顺~

问题根源

你写的carList[car[0]]是错误的逻辑:

  • car是你输入的完整车牌号字符串(比如"ABC 123"),car[0]只会取这个字符串的第一个字符(也就是"A"),而你的字典carList的键是完整的车牌号,所以这样肯定找不到对应的值,还会引发KeyError。
  • 正确的姿势是:先通过carList[car]拿到对应车辆的属性列表,再用索引从这个列表里取具体属性,比如carList[car][0]是车型,carList[car][1]是年份,以此类推。

另外还有几个小细节要调整

  • 你重复调用了两次input()获取车牌号,这是冗余的,删掉一次就好。
  • 判断车辆是否存在的条件可以更简洁:用not (car in carList)代替(car in carList.keys()) == 0,可读性更强。
  • 最后一行你用了choice = str(input(...)),如果只是想打印车辆信息,直接用print()就够了;如果是想让用户确认操作,再保留input()也可以。

修正后的完整代码

carList = {"ABC 123": ["Mustang GT", 1969, "Black"]}
# 只需要一次输入获取车牌号
car = input("What car would you like to withdraw? Write the license plate: ").upper()

# 简化判断条件,循环直到输入有效或用户输入0
while not (car in carList) and car != "0":
    car = input("That car doesn't exist. Write a new one or press 0: ").upper()

# 当用户没输入0时,打印车辆信息
if car != "0":
    model, year, colour = carList[car]  # 用解包让代码更清爽
    print(f"You wish to withdraw {car}\nModel: {model}\nYear: {year}\nColour: {colour}")
    # 如果需要获取用户选择,再用input:
    # choice = input("Confirm withdrawal? (Y/N): ").upper()

代码解释

  • 用carList[car]拿到对应车辆的属性列表,然后直接解包成model, year, colour,比用索引取值的写法更易读。
  • 加了if car != "0"的判断,避免用户输入0的时候还去尝试打印不存在的车辆信息。

这样修改后,就能正常提取并打印每个车辆属性啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:17:41