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

Python如何根据匹配元素合并两个多维列表

实现方法

你可以先对list2按匹配键做索引分组,避免双重循环提升运行效率,具体实现如下:

from collections import defaultdict

list1 = [['1', '2' ,'A'], ['3','4','D']]
list2 = [['A','A1'],['B','B1'],['C','C1'],['D','D1'],['D','D2']]

# 构建匹配键到对应值的分组映射
key_map = defaultdict(list)
for item in list2:
    key, val = item[0], item[1]
    key_map[key].append(val)

result = []
for item in list1:
    match_key = item[-1]
    # 遍历所有匹配的取值拼接生成新子项
    for val in key_map.get(match_key, []):
        result.append(item.copy() + [val])

print(result)
# 输出结果:[['1', '2', 'A', 'A1'], ['3', '4', 'D', 'D1'], ['3', '4', 'D', 'D2']]

如果不想引入额外依赖,也可以用普通字典实现分组逻辑:

list1 = [['1', '2' ,'A'], ['3','4','D']]
list2 = [['A','A1'],['B','B1'],['C','C1'],['D','D1'],['D','D2']]

key_map = {}
for item in list2:
    key, val = item[0], item[1]
    if key not in key_map:
        key_map[key] = []
    key_map[key].append(val)

result = []
for item in list1:
    match_key = item[-1]
    for val in key_map.get(match_key, []):
        result.append(item + [val])

print(result)

逻辑说明

  • 先遍历一次list2完成分组,时间复杂度为O(n),n为list2的长度
  • 再遍历list1匹配生成结果,时间复杂度为O(m+k),m为list1的长度,k为最终结果的总长度
  • 相比两层嵌套循环的实现,数据量较大的时候性能优势更明显

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 02:54:03