首页 > 解决方案 > 'if' 'or'- 字典中的语句总是返回 TRUE

问题描述

我有这个 python 字典:

event_dict = {
            'False': 1,
            'Hit': 2,
            'MP1': 3,
            'MP2': 4,
            'MP3': 5,
            'M_False': 6,
            'M_Hit': 7,
            'OGT': 8,
            'PMC': 9,
            'S  4': 10,
            'actiCAP Data On': 11,
            'boundary': 12
 }

我编写了这段代码来检查条目“TriEVE”、“TriODD”、“TriPMC”是否在字典中(它们不是!):

if "TriEVE" or "TriODD" or "TriPMC" in event_dict:
    print('THIS SESSION HAS BAD ANNOTATIONS!!!!!!!')

代码返回:

THIS SESSION HAS BAD ANNOTATIONS!!!!!!!

我尝试仅使用一个输入(没有“或”)使用“if”语句,例如:

if "TriEVE" in event_dict:
    print('THIS SESSION HAS BAD ANNOTATIONS!!!!!!!')
    print(subject)

正如预期的那样,代码什么也不返回。

在这种情况下,为什么我不能使用“或”语句?有没有一种更聪明的方法可以一次搜索多个字典条目?

标签: python-3.xdictionaryif-statement

解决方案


在这种情况下,您想要

if "TriEVE" in event_dict.keys() or "TriODD" in event_dict.keys() or "TriPMC" in event_dict.keys():

这是因为任何非零或非无在 Python 中被评估为 True 因为您似乎想搜索字典的键,所以如果您想查看,您必须使用 .keys() 或 .values()价值观。对象本身在这种情况下没有用


推荐阅读