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

Python中检查字符串是否在字典内列表的高效简洁实现

检查字符串是否存在于字典的任意列表中

问题描述

我有一个内部包含字符串列表的字典,需要检查某个字符串是否存在于该字典的任意列表中。示例代码如下:

classes = {
  "class_A" : ["Mike","Alice","Peter"],
  "class_B" : ["Sam","Robert","Anna"],
  "class_C" : ["Tom","Nick","Jack"]
}

students=["Alice","Frodo","Jack"]
for student in students:
  if student *in any of the classes*:
    print("Is here")
  else:
    print("Is not here")

需求:遍历students列表中的每个学生,若该学生存在于任意班级列表中则执行操作A,否则执行操作B,预期输出为Is here, Is not here, Is here。

当前实现存在输入规模扩大时性能不佳的问题,另一个可行的函数实现调用不便,现寻求满足以下要求的简洁一行代码:

  • 不复制列表
  • 不依赖字典的键
  • 简洁易用
  • 无需过度工程化的超高效方案

解决方案

简洁实现代码

直接在循环中使用any()结合生成器表达式,一行判断逻辑即可满足需求:

for student in students:
    print("Is here" if any(student in lst for lst in classes.values()) else "Is not here")

方案符合要求的说明

  • 不复制列表:生成器表达式student in lst for lst in classes.values()不会创建新的列表副本,仅逐个遍历字典中的列表进行检查
  • 不依赖字典的键:通过classes.values()直接获取所有班级列表,完全不涉及字典的键名
  • 简洁易用:逻辑直观,直接嵌入循环内,无需额外定义函数或复杂结构
  • 性能适中:any()会在找到第一个匹配项时立即停止遍历(短路求值),避免不必要的计算,常规场景下足够高效,无过度工程化设计

运行结果

执行上述代码后,输出与预期一致:

Is here
Is not here
Is here

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 07:01:56