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

Python如何不使用嵌套循环合并两个按name关联的字典列表

实现方法

我们可以先把其中一个列表转换为以name为键的映射字典,利用字典O(1)的查找特性避免嵌套循环,整体时间复杂度为O(n+m),效率远高于嵌套循环方案。

示例代码(兼容所有Python3版本)

my_inital_list=  [{"name": "Tom", "age": 30},
  {"name": "Mark", "age": 25},
  {"name": "Pam", "age": 97}]

my_second_list =   [{"name": "Pam", "quant": 10},
  {"name": "Mark", "quant": 5},
  {"name": "Tom", "quant": 7}]

# 构造name到quant的映射字典,仅遍历一次第二个列表
name_quant_map = {item["name"]: item["quant"] for item in my_second_list}

# 遍历一次第一个列表完成合并,无嵌套循环
my_final_list = [
    {**item, "quant": name_quant_map[item["name"]]}
    for item in my_inital_list
]

Python3.9+ 简化写法(支持字典直接合并)

如果你的Python版本在3.9及以上,可以用更简洁的字典合并运算符|实现:

# 构造name到完整字典的映射
name_map = {item["name"]: item for item in my_second_list}
# 直接合并两个字典
my_final_list = [item | name_map[item["name"]] for item in my_inital_list]

可选兼容逻辑

如果两个列表的name字段不完全匹配,可以用get方法设置默认值避免KeyError:

my_final_list = [
    {**item, "quant": name_quant_map.get(item["name"], 0)}
    for item in my_inital_list
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 13:36:03