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
相关产品推荐
相关产品推荐

