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

Python如何更简便获取JSON列表中匹配指定条件的元素?

实现方案

根据你的使用场景,有两种常用的优化方式:

单次查询场景

如果只需要偶尔查询一次匹配条目,你原来的循环逻辑本身已经是最优时间复杂度O(n),可以用next()加生成器表达式简化写法,实现类似字典get()的默认值效果:

wanted_person = "karl"
# 找到第一个匹配的条目返回,没匹配到则返回None
matched_person = next((p for p in people if p["name"] == wanted_person), None)

这种写法和你原来的循环逻辑完全等价,遍历到第一个匹配项就会停止,不会遍历整个列表。

多次查询场景

如果需要频繁对people列表做姓名查询,最优方案是提前把列表转换为以姓名为key的字典,后续所有查询都是O(1)时间复杂度,完全符合你要的类字典get()调用习惯:

# 提前构建姓名到人物条目的映射字典(假设姓名唯一)
people_index = {p["name"]: p for p in people}

# 后续直接用字典方法查询
karl = people_index.get("karl")
# 也可以自定义未匹配到的默认值
unknown = people_index.get("not_exist", {"name": "未知", "age": -1})

如果存在重名的情况,可以用以下方式存储同名的所有条目:

from collections import defaultdict
people_index = defaultdict(list)
for p in people:
    people_index[p["name"]].append(p)

# 查询得到所有叫karl的条目列表
karl_list = people_index.get("karl", [])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 07:27:02