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

Python中按指定字段匹配两个列表并合并追加数据的方法

解决方案

方案1:纯Python基础实现(无需第三方库,适合理解底层逻辑)

利用字典做匹配映射,查找效率为O(1),哪怕a有2万条数据运行速度也足够,逻辑完全基于Python内置的列表、字典结构:

# 示例数据
a = [[1,'a','b','a@b',11],
     [2,'c','d','c@b',22],
     [3,'e','f','e@b',33]]
b = [['a','banana','A',100],
     ['e','apple','A',100]]

# 第一步:构造a的匹配映射字典,键为匹配用的索引1字段,值为需要提取的索引3、4字段
a_match_map = {item[1]: (item[3], item[4]) for item in a}

# 第二步:遍历b匹配对应字段,生成目标列表c
c = []
for row in b:
    match_key = row[0]
    if match_key in a_match_map:
        # 拼接b当前行和a中对应的两个字段
        new_row = row + list(a_match_map[match_key])
        c.append(new_row)

如果不需要保留原b列表,也可以直接修改原b:

for row in b:
    if row[0] in a_match_map:
        row.extend(a_match_map[row[0]])
c = b

方案2:pandas实现(更简便,适配CSV读写场景)

原始数据本身就是CSV格式的话,用pandas的关联操作无需自己写循环,代码更简洁:

import pandas as pd

# 如果是直接读取CSV文件,直接用pd.read_csv("你的文件路径.csv")即可,无需从列表转DataFrame
df_a = pd.DataFrame(a)
df_b = pd.DataFrame(b)

# 按匹配字段关联,只取a中需要的第3、4列(索引从0开始)
df_c = pd.merge(df_b, df_a[[1,3,4]], left_on=0, right_on=1, how="inner")
# 删掉多余的重复匹配列
df_c = df_c.drop(columns=[1])
# 转成列表格式
c = df_c.values.tolist()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 06:54:03