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

Python如何通过指定键值对从字典列表中获取目标字典,有没有更高效方法?

方案1:仅单次查询场景

如果只需要执行一次匹配查询,没有比全列表遍历效率更高的方案了,时间复杂度为固定的O(n)。你的现有代码还可以简化,多余的else continue可以直接去掉:

for enrollment in enrollments:
    if enrollment['account_key'] == a:
        print(enrollment)

如果需要获取第一个匹配的字典(确认匹配结果唯一时),可以用更简洁的生成器写法:

target = next((e for e in enrollments if e['account_key'] == a), None)
if target:
    print(target)

方案2:多次按同一key查询场景

如果需要反复根据account_key做匹配查询,可以先把原列表转换成以该key为索引的映射字典,后续单次查询的时间复杂度可以降到O(1),整体效率远高于每次遍历全列表。

单key对应唯一字典的情况

# 前置构建索引,成本为O(n)
enrollment_map = {e['account_key']: e for e in enrollments}
# 后续直接查询
print(enrollment_map.get(a))

单key对应多个字典的情况

from collections import defaultdict
# 前置构建索引,相同key的字典存入列表
enrollment_map = defaultdict(list)
for e in enrollments:
    enrollment_map[e['account_key']].append(e)
# 后续直接查询所有匹配项
print(enrollment_map.get(a, []))

特殊场景优化

如果原列表本身已经按照account_key排序,可以用二分查找实现单次查询O(logn)的时间复杂度,效率高于全量遍历,可通过Python标准库bisect模块实现对应逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 21:48:02