You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python遍历字典时多条件if判断失效原因及简化写法咨询

问题1:第一段代码异常运行的原因

Python中==运算符的优先级高于or运算符,你写的if name == 'Jim' or 'Anna' or 'Tim'实际会被解析为:

if (name == 'Jim') or ('Anna') or ('Tim')

而Python里非空字符串的布尔值恒为True,所以不管name取值是什么,整个条件判断的结果永远为True,所有名字都会被添加到Smith列表,Miller列表始终为空,自然不符合预期。
第二段代码你明确写了每次判断都和name比较,name == 'Jim' or name == 'Anna' or name == 'Tim'的逻辑完全符合你要匹配三个名字的需求,所以可以正常运行。

问题2:更简便的实现方式

推荐使用Python的成员运算符in简化多条件匹配逻辑,只需要把要匹配的目标值放到一个元组/集合里即可,代码可简化为:

d = {2312: 'Jim', 2323: 'Anna', 2314: 'Tim', 3054: 'Marc', 3574: 'Valerie', 3698: 'Nina'}
target_names = {'Jim', 'Anna', 'Tim'}
Smith = [name for name in d.values() if name in target_names]
Miller = [name for name in d.values() if name not in target_names]

print(Smith)
print(Miller)

这种写法在匹配条件较多的时候优势更明显,不需要重复写大量or判断,可读性和维护性都更好。

内容的提问来源于stack exchange,提问作者PoPhoRmA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 06:54:05