Python中如何根据字典值列表内的单个元素查找对应的键
解决方案
你现有代码的核心问题是判断逻辑只校验输入值和字典值完全相等,因此只能匹配到完整列表。要实现支持列表内单个元素查找,修改判断逻辑即可。
修改后代码
MainDict={'FAQ':['FAQ','faq','Faq']} def key_return(X): for Y, value in MainDict.items(): # 同时兼容两种匹配场景:匹配完整列表 / 匹配列表内的单个元素 if X == value or (isinstance(value, list) and X in value): return Y return "Key doesnt exist" print(key_return(['FAQ', 'faq', 'Faq'])) # 输出:FAQ print(key_return('faq')) # 输出:FAQ
补充说明
- 如果你的字典里可能存在非列表类型的值,
isinstance(value, list)的判断可以避免对非列表值执行in操作时报错。 - 上述代码默认返回第一个匹配到的键,如果存在多个键对应的列表都包含目标元素,你可以修改逻辑收集所有匹配键再返回,示例如下:
def key_return_all(X): matched_keys = [] for Y, value in MainDict.items(): if X == value or (isinstance(value, list) and X in value): matched_keys.append(Y) return matched_keys if matched_keys else "Key doesnt exist"
内容的提问来源于stack exchange,提问作者Felix
相关产品推荐
相关产品推荐

