Python中如何检查多个值是否全部存在于字典的values中
实现方法说明
你之前直接判断值是否在字典中不生效,是因为Python的in运算符对字典默认检查的是键是否存在,如果要检查值是否存在,需要调用字典的.values()方法获取所有值的视图再判断。
简化实现代码
适配原有双参数输入的版本
直接利用in判断两个值是否都在字典的值中即可,不需要嵌套循环:
def check_value_exist(test_dict, value1, value2): return value1 in test_dict.values() and value2 in test_dict.values()
适配任意长度待检查值列表的通用版本
如果待检查的值数量不固定,可以结合Python内置的all()函数实现,适配list_values输入场景:
def check_all_values_exist(test_dict, value_list): # 所有待检查值都在字典的值中时才返回True return all(val in test_dict.values() for val in value_list)
使用示例
以你给出的word_freq字典为例:
word_freq = { "Hello": 56, "at": 23, "test": 43, "this": 78 } # 双参数函数调用 print(check_value_exist(word_freq, 23, 43)) # 输出 True print(check_value_exist(word_freq, 23, 100)) # 输出 False # 通用列表版本调用 list_values = [23, 78, 56] print(check_all_values_exist(word_freq, list_values)) # 输出 True
原有代码的逻辑问题
你原来编写的函数存在逻辑漏洞:只要匹配到任意一个待检查值,就会把do_exist设为True,后续即使有值匹配不到也不会修改这个状态,最终只能判断「至少有一个待检查值存在」,无法满足你「所有值都要存在」的需求。
内容的提问来源于stack exchange,提问作者jsuarezbaron
相关产品推荐
相关产品推荐

