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

Python如何优化按指定ID顺序从字典列表提取对应元素的代码

优化实现方案

原代码问题分析

  • 性能开销大:match_list.index(val) 每次查询都要遍历整个列表,整体时间复杂度为O(n*m),数据量较大时性能下降明显
  • 代码冗余,可简化空间大

最优写法(推荐)

先将input1构建为ID到对应字典的映射表,再直接按input2的顺序取值:

# 构建ID映射,时间复杂度O(n)
id_map = {item["ID"]: item for item in input1}
# 按input2顺序提取结果,自动过滤不存在的ID,时间复杂度O(m)
return_list = [id_map[id_val] for id_val in input2 if id_val in id_map]

该写法的优势:

  • 整体时间复杂度降到O(n+m),大数据量下性能优势非常突出
  • 代码简洁易读,和原逻辑完全一致:input2中不存在于input1的ID会自动跳过,不会报错
  • 内存占用可控,仅多存储了一份ID到字典引用的映射,没有额外复制字典数据

简化写法(仅适合ID完全匹配的场景)

如果你可以确定input2中所有的ID都一定存在于input1中,可以直接写成一行:

return_list = [next(item for item in input1 if item["ID"] == id_val) for id_val in input2]

注意:如果input2中存在input1没有的ID,该写法会抛出StopIteration异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 22:27:04