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

Python中如何用简洁高效的代码检查字典列表中是否存在指定类型值?

检查字典列表中是否存在指定type值的高效简洁写法

先给出待处理的数据和初始变量:

universe_creatures = [
    {'type': 'dragon', 'weight': 1400},
    {'type': 'kraken', 'weight': 6000},
    {'type': 'elf', 'weight': 75}
]

初始化代码:

typ = 'dragon'
found = False

几种实现方式对比

1. 手动for循环

这是最直观的实现逻辑,遍历过程中找到匹配项就立即终止循环,仅需一次遍历:

# for loop
for c in universe_creatures:
    if typ == c['type']:
        found = True
        break

2. 生成器表达式

这种写法更简洁,核心逻辑和手动for循环完全一致——找到匹配项就停止遍历,不会生成完整的中间集合,额外开销几乎可以忽略:

# generator expression
found = typ in (c['type'] for c in universe_creatures)

3. 列表推导式

这种写法效率最低,因为会先完整遍历整个列表生成包含所有type的新列表,再执行in判断,相当于遍历了两次数据,不推荐使用:

# list comprehension
# 先迭代一次生成新列表,再用in操作符再次迭代查找
found = typ in [c['type'] for c in universe_creatures]

核心结论

  • 生成器表达式相比手动for循环的额外开销极小,完全可以忽略,同时写法更简洁,是兼顾效率和可读性的优选方案。
  • 你对生成器表达式比列表推导式高效的判断是正确的:列表推导式会生成完整的中间列表,带来额外的内存占用和两次遍历的开销,而生成器表达式是按需生成元素,找到匹配项就停止。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 12:25:08