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

合并两个数组:同索引值相加,异索引保留原元素

数组合并:相同索引值相加,不同索引保留原数据

问题说明

现有两个数组,每个子元素包含索引和对应数值:

arr1 = [
    [1000, 5.0],
    [1270, 5.0],
    [1315, 5.0]
]

arr2 = [
    [578, 5.0],
    [1000, 5.0],
    [1315, 5.0]
]

需要实现:

  • 合并两个数组
  • 相同索引的数值相加
  • 不同索引直接保留原数据
  • 最终数组不需要排序

之前试过zip()方法,但没法把索引和数值对应起来,达不到需求。

解决方法:用字典处理索引映射

字典的键刚好能存唯一索引,值用来累加数值,步骤很简单:

  1. 建个空字典存合并后的索引和数值
  2. 先遍历其中一个数组,把索引和数值存进字典
  3. 再遍历另一个数组,碰到已存在的索引就累加数值,不存在就直接存
  4. 最后把字典转回数组格式(Python 3.7及以上的字典会保留插入顺序,不用额外排序)

代码实现(匹配示例输出顺序)

如果要完全和示例里的输出顺序一致,先遍历arr2再遍历arr1就行:

# 原始数组
arr1 = [[1000, 5.0], [1270, 5.0], [1315, 5.0]]
arr2 = [[578, 5.0], [1000, 5.0], [1315, 5.0]]

# 初始化合并字典
merged_dict = {}

# 先处理arr2的元素
for idx, val in arr2:
    merged_dict[idx] = val

# 处理arr1,累加相同索引的值
for idx, val in arr1:
    if idx in merged_dict:
        merged_dict[idx] += val
    else:
        merged_dict[idx] = val

# 转成目标数组格式
FINAL_ARR = [[idx, val] for idx, val in merged_dict.items()]

# 打印结果
print("FINAL_ARR=")
print("            [")
for item in FINAL_ARR:
    print(f"             {item[0]}      {item[1]}")
print("            ]")

执行结果

FINAL_ARR=
            [
             578      5.0
             1000      10.0
             1315      10.0
             1270      5.0
            ]

内容的提问来源于stack exchange,提问作者My name is jeff

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 20:45:31