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

如何使用Python将包含元组的两个列表合并为一个列表

合并两个含元组的列表

问题描述

你有两个包含元组的列表,需要将它们合并为一个列表,合并规则是基于元组的前两个元素(姓名、公司)匹配,将职位和技能字段拼接成新的四元素元组,最终得到指定的输出结果。

原始数据

list1 = [('mike','Company A','developer'),('steve','Company B','developer'),('tom','Company B','tester'),('mike','Company A','tester')]
list2 = [('mike','Company A','C++'),('steve','Company B','Python'),('tom','Company B','Automation'),('mike','Company A','Manual')]

预期输出

list3 = [('mike','Company A','developer','C++'),('steve','Company B','developer','Python'),('tom','Company B','tester','Automation'),('mike','Company A','tester','Manual')]

方法1:按列表顺序直接合并

如果两个列表的元素是按顺序一一对应的(即list1的第n个元组对应list2的第n个元组),可以用zip函数快速拼接:

list1 = [('mike','Company A','developer'),('steve','Company B','developer'),('tom','Company B','tester'),('mike','Company A','tester')]
list2 = [('mike','Company A','C++'),('steve','Company B','Python'),('tom','Company B','Automation'),('mike','Company A','Manual')]

list3 = [t1 + t2[2:] for t1, t2 in zip(list1, list2)]
print(list3)

这种方式简洁高效,直接遍历两个列表的对应元素,将list1的元组和list2元组的第三个元素拼接。


方法2:按姓名+公司匹配合并(通用场景)

如果两个列表的元素顺序不固定,或者存在同一姓名+公司对应多个职位/技能的情况,可以用字典构建映射关系来匹配:

from collections import defaultdict

list1 = [('mike','Company A','developer'),('steve','Company B','developer'),('tom','Company B','tester'),('mike','Company A','tester')]
list2 = [('mike','Company A','C++'),('steve','Company B','Python'),('tom','Company B','Automation'),('mike','Company A','Manual')]

# 构建(姓名, 公司)到技能列表的映射
skill_map = defaultdict(list)
for name, company, skill in list2:
    skill_map[(name, company)].append(skill)

list3 = []
for name, company, role in list1:
    # 检查当前姓名+公司是否有匹配的技能
    if skill_map[(name, company)]:
        # 取出第一个匹配的技能(保证顺序对应)
        skill = skill_map[(name, company)].pop(0)
        list3.append((name, company, role, skill))

print(list3)

这个方法会先把list2的技能按姓名+公司分组,然后遍历list1的每个职位,找到对应的技能并合并,能处理顺序不一致和多匹配的场景。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 20:55:10