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

基于用户与调度列表匹配的嵌套列表元素合并求和需求

合并相同用户相同任务对应的数值列表

原始数据

a = [[24, 24, 24, 24], [24, 24, 24, 24], [24, 24, 24, 24], [7, 0, 0, 0], [1, 0, 0, 0], [17, 7, 0, 0], [6, 1, 0, 0], [0, 17, 7, 0], [0, 6, 1, 0], [0, 0, 17, 0], [0, 0, 6, 1], [0, 0, 2, 5], [0, 0, 0, 6], [0, 0, 0, 4]]

users = ['Khod OR', 'Zader', 'Kamel Tor', 'Dave', 'Samir Fein', 'Chris', 'Samir Fein', 'Dave', 'Samir Fein', 'Chris', 'Samir Fein', 'Chris', 'Samir Fein', 'Dave']

schedules = ['ItSupport', 'NetworkOps', 'InfraDevOps', 'DBOps', 'SecOps', 'DBOps', 'SecOps', 'DBOps', 'SecOps', 'DBOps', 'SecOps', 'DBOps', 'SecOps', 'DBOps']

需求说明

对比users和schedules列表,若同一用户对应位置的任务(schedules值)相同,则将a列表对应位置的子列表按元素位置求和合并。

示例

用户Chris出现在索引5、9、11处,对应任务均为DBOps,因此将a中对应子列表[17, 7, 0, 0]、[0, 0, 17, 0]、[0, 0, 2, 5]按位置求和,得到合并后的子列表[17,7,19,5]。

期望输出

a = [[24,24,24,24],[24,24,24,24],[24,24,24,24],[7,17,7,4],[7,7,7,7],[17,7,19,5]]

users = ['Khod OR', 'Zader', 'Kamel Tor', 'Dave', 'Samir Fein', 'Chris']

schedules = ['ItSupport', 'NetworkOps', 'InfraDevOps', 'DBOps','SecOps','DBOps']

解决方案

通过字典分组实现合并逻辑,代码如下:

# 初始化分组字典,键为(用户, 任务)组合,值为对应数值列表的累加结果
grouped_data = {}

# 同步遍历三个列表的对应元素
for user, task, nums in zip(users, schedules, a):
    key = (user, task)
    if key not in grouped_data:
        # 首次出现该用户-任务组合,直接复制子列表
        grouped_data[key] = nums.copy()
    else:
        # 已有记录,按元素位置累加求和
        grouped_data[key] = [sum(pair) for pair in zip(grouped_data[key], nums)]

# 从分组字典拆分得到三个新列表
new_users = [k[0] for k in grouped_data.keys()]
new_schedules = [k[1] for k in grouped_data.keys()]
new_a = list(grouped_data.values())

# 输出结果
print("a =", new_a)
print("users =", new_users)
print("schedules =", new_schedules)

代码说明

  1. 用zip同步遍历三个列表,保证用户、任务、数值子列表的对应关系。
  2. 以(用户, 任务)作为唯一标识,将相同组合的数值子列表累加合并。
  3. 最后从分组字典中提取键和值,拆分得到合并后的三个目标列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 04:27:04