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

Python字典取值异常:合法键输入后get()返回None问题排查

问题分析与解决

问题根源

  • 你把user_item()返回的列表转成了元组('Name_item',),但字典items的键是单个字符串(比如'Name_item'),元组和字符串是完全不同的类型,用元组当键查字典自然找不到对应值,所以get()返回None。
  • 你尝试的items.get("i")是用字符串"i"作为键,这既不是你输入的有效键,也不是字典里存在的键,所以同样返回None。

修正方案

根据你的需求,应该遍历用户输入的每个有效键,逐个获取对应的值:

修正后的代码

# 先定义你的items字典(示例)
items = {
    'Name_item': '对应的值',
    'Another_item': '另一个值'
}

def main():
    user_inputs = user_item()  # 直接用列表即可,无需转元组
    print("用户输入的有效键:", user_inputs)
    
    # 逐个获取每个键对应的值并打印
    for key in user_inputs:
        value = items.get(key)
        print(f"键 {key} 对应的值:{value}")
    
    # 也可以把所有值收集成列表
    all_values = [items[key] for key in user_inputs]
    print("所有对应值的列表:", all_values)

def user_item():
    order = []
    while True:
        try:
            i = input("Item: ").title()
            if i in items:
                order.append(i)
                continue
            print("该键不存在,请重新输入")
        except EOFError:
            return order

main()

关键说明

  1. 不需要把列表转成元组,你要处理的是列表里的单个键,而非把整个列表/元组当作字典的键。
  2. 遍历用户输入的每个键,用单个键去字典取值,就能得到正确的value。
  3. 因为user_item()已经校验过输入的键一定在字典里,所以可以直接用items[key]代替items.get(key),后者仅在键不存在时返回None,你的场景下两种方式都可行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 17:07:21