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

Python查找列表中符合条件的字典 有没有类似JS Array.find的简洁方法?

Python 标准库目前确实没有内置和 JavaScript Array.prototype.find 完全对等的列表方法,但有更接近且效率更高的替代写法,比你提到的列表推导取索引的方案更优:

最常用对标写法

用 next() 搭配生成器表达式,和 JS find 逻辑完全一致:找到第一个符合条件的元素就终止遍历,不会像列表推导一样先筛选全量符合条件的元素,性能更好:

# 找到第一个符合条件的元素直接返回,找不到会抛StopIteration
next(o for o in a if o['k'] == v)

# 找不到时返回默认值(比如None),避免报错
next((o for o in a if o['k'] == v), None)

进一步简化的封装方案

如果频繁用到类似查找逻辑,可以自己封装一个通用工具函数,调用时比 JS 的写法还要简洁:

def find(lst, target_key, target_val, default=None):
    return next((item for item in lst if item[target_key] == target_val), default)

调用示例:

result = find(a, 'k', v)

补充说明

你之前用的 [o for o in a if o['k'] == v][0] 写法逻辑更接近 JS 的 Array.prototype.filter 后取索引0,最坏情况会遍历整个列表生成完整的筛选结果,性能比 next 写法差不少,更推荐用前者。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 00:36:05