python-3.x - '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)
正如预期的那样,代码什么也不返回。
在这种情况下,为什么我不能使用“或”语句?有没有一种更聪明的方法可以一次搜索多个字典条目?
解决方案
在这种情况下,您想要
if "TriEVE" in event_dict.keys() or "TriODD" in event_dict.keys() or "TriPMC" in event_dict.keys():
这是因为任何非零或非无在 Python 中被评估为 True 因为您似乎想搜索字典的键,所以如果您想查看,您必须使用 .keys() 或 .values()价值观。对象本身在这种情况下没有用
推荐阅读
- android - 使用 Flutter 的 Wifi 细节
- java - 关于带字符数组的 for 循环的基本问题(Java)
- vue.js - 如何使用 axios.post 发布选择输入选项值?
- c# - ModelBinded IList 项为空 OnPost
- reactjs - 上传到 s3 时反应 CORS 被阻止
- python-3.x - 引发 ValueError 并一步登录
- reactjs - 在状态下编辑数组会添加一个新元素而不是更新现有的(反应 JS)
- google-cloud-firestore - Firestore(Angularfire)“合并”或在另一个文档中引用一个文档
- laravel - 如何在 Laravel 中创建额外的可验证模型
- html - 如何在html5的TextBox中自动在4位数字后插入连字符“-”?