Python根据字典值查找键时触发TypeError问题求助
根据字典值查找对应键的问题解决
问题背景
给定字典:
details={'fname':'ankur', 'lname':'sharma', 'age':29, 'skills':['HTML','CSS','Javascript','C','C++','Java'], 'language':['Hindi','English','French'], 'salary':50000 }
需求:输入一个值,找到字典中对应该值的键(例如输入CSS,期望输出skills),但原有代码触发类型错误:
原有代码:
n=input('Enter value: ') for i in details: if n in details[i]: print(details[i])
错误信息:
Traceback (most recent call last): File "main.py", line 11, in <module> if n in details[i]: TypeError: argument of type 'int' is not iterable
错误原因
字典中age、salary是整数类型,而in操作符仅支持可迭代对象(字符串、列表等),直接对整数使用in会触发类型错误;同时原有代码逻辑错误,需求是输出键而非值,且未处理输入值与字典值的类型匹配问题。
解决方案
details={'fname':'ankur', 'lname':'sharma', 'age':29, 'skills':['HTML','CSS','Javascript','C','C++','Java'], 'language':['Hindi','English','French'], 'salary':50000 } n = input('Enter value: ') # 尝试将输入转为整数,适配数值型字典值 try: n_num = int(n) except ValueError: n_num = None for key, value in details.items(): # 匹配列表类型的值 if isinstance(value, list): if n in value: print(key) # 匹配字符串类型的值 elif isinstance(value, str): if n == value: print(key) # 匹配整数类型的值 elif isinstance(value, int): if n_num is not None and n_num == value: print(key)
代码说明
- 先尝试将输入字符串转为整数,用于匹配字典中的
age、salary这类数值型值,转换失败则设为None - 遍历字典键值对,根据值的类型做针对性匹配:
- 列表类型:检查输入值是否在列表内,匹配则输出对应键
- 字符串类型:直接比较输入值与字符串是否相等,匹配则输出对应键
- 整数类型:用转换后的整数与字典值比较,匹配则输出对应键
测试示例:
- 输入
CSS→ 输出skills - 输入
29→ 输出age - 输入
ankur→ 输出fname
内容的提问来源于stack exchange,提问作者tejveer meena
相关产品推荐
相关产品推荐

