Python中如何在字典值中搜索多个字符串?求最优单行实现
单键值对字典多字符串匹配的单行优化实现
你的原代码存在逻辑问题:any(a,b,c in value for value in s.values())中,any()会将a、b直接作为布尔值判断(非空字符串恒为True),导致无论c是否存在都会输出"YES",这不符合实际需求。
针对仅含单个键值对的字典,以下是优化后的单行实现:
# 直接写死目标字符串的版本 print("YES" if any(term in next(iter(s.values())) for term in ["increment", "variable", "found"]) else "NO")
如果需要保留变量a/b/c,可以写成:
a, b, c = "increment", "variable", "found" s = {'d':'want to increment the location variable based on which x is found'} print("YES" if any(t in next(iter(s.values())) for t in [a,b,c]) else "NO")
核心优化点:
- 用
next(iter(s.values()))直接提取字典的唯一值,无需遍历所有值(因为已知只有一个键值对,效率更高) - 通过生成器表达式遍历所有目标字符串,
any()会在找到第一个匹配项时立即停止判断,减少不必要的计算 - 用三元表达式将判断与输出合并为一行,简洁高效
内容的提问来源于stack exchange,提问作者mac
相关产品推荐
相关产品推荐

