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

如何在Python中从不同元组按团队匹配Dev与BA生成新元组

解决方案:同团队Dev与BA配对生成新元组

首先,咱们得先把原始的扁平元组转换成结构化的数据,这样才能方便按团队分组配对。原始的devTuple和baTuple都是每3个元素代表一个人员的信息(ID、名称、所属团队),所以第一步先把它们拆分成人员列表,再按团队归类,最后完成同团队的配对。

步骤1:拆分扁平元组为结构化人员列表

先写个小函数,把长元组拆成每3个元素一组的人员信息元组:

def split_tuple_to_people(tuple_data):
    # 每3个元素为一组,拆分成(id, name, team)的元组列表
    return [tuple_data[i:i+3] for i in range(0, len(tuple_data), 3)]

步骤2:按团队分组Dev和BA

把拆分后的Dev和BA列表按团队分组,方便后续配对:

from collections import defaultdict

# 拆分原始元组
dev_list = split_tuple_to_people(devTuple)
ba_list = split_tuple_to_people(baTuple)

# 按团队分组Dev
dev_by_team = defaultdict(list)
for dev in dev_list:
    dev_by_team[dev[2]].append(dev)

# 按团队分组BA
ba_by_team = defaultdict(list)
for ba in ba_list:
    ba_by_team[ba[2]].append(ba)

步骤3:同团队配对并生成新元组

遍历每个团队,把该团队的Dev和BA一一配对,最后把所有配对结果合并成一个新元组:

paired_result = []

# 遍历所有团队
for team in teamlist:
    # 获取当前团队的Dev和BA列表
    team_devs = dev_by_team.get(team, [])
    team_bas = ba_by_team.get(team, [])
    
    # 一一配对(如果数量不一致,会以较短的列表长度为准)
    for dev, ba in zip(team_devs, team_bas):
        paired_result.append((dev, ba))

# 转换为最终的元组
final_paired_tuple = tuple(paired_result)

# 打印结果看看
for pair in final_paired_tuple:
    print(f"Dev: {pair[0]} | BA: {pair[1]}")

补充说明

  • 如果某个团队的Dev和BA数量不一致,zip()会自动以较短的列表长度为准,多余的人员不会被配对。如果你想保留所有人员(比如用None填充空缺),可以改用itertools.zip_longest。
  • 最终的final_paired_tuple里的每个元素都是一个包含Dev信息元组和BA信息元组的元组,比如((1, 'Dev1', 'T1'), (1, 'BA1', 'T1'))。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 15:37:47