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()
关键说明
- 不需要把列表转成元组,你要处理的是列表里的单个键,而非把整个列表/元组当作字典的键。
- 遍历用户输入的每个键,用单个键去字典取值,就能得到正确的value。
- 因为
user_item()已经校验过输入的键一定在字典里,所以可以直接用items[key]代替items.get(key),后者仅在键不存在时返回None,你的场景下两种方式都可行。
内容的提问来源于stack exchange,提问作者tom
相关产品推荐
相关产品推荐

