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

Python如何合并两个不同长度数组并将对应元素值相邻放置

数组按对应位置合并的代码修正方案

问题背景

现有两个待合并数组,定义如下:

Arry1 = [{"key" : "A", "values": [[111], [222]]}]
Arry2 = [333,444,555]

期望合并后的输出结构为:

output = [{"key" : "A", "values": [[111, 333], [222,444]]}]

原有实现代码运行后出现多余平铺嵌套,不符合预期:

out = []
for t in zip(Arry1[0]["values"],Arry2):
    for x in t:
        out.append(x)
# 实际输出: [[111], [333], [222], [444]]  

错误原因

原有代码存在两个核心问题:

  • 没有保留原字典中的key字段,直接把所有元素平铺追加到空列表,丢失了外层的字典结构
  • 对zip返回的位置配对元组做了二次循环拆分,把本该组合在一起的对应元素拆成了独立的列表项

另外zip函数会自动按两个序列中较短的长度做截断,刚好符合需求——Arry2中多余的555会被自动忽略,不需要额外做长度判断。

修正代码

常规循环写法(可读性更高)

# 提取Arry1里的原始字典项
source = Arry1[0]
merged_values = []
# 按位置配对两个序列的元素
for sub_arr, num in zip(source["values"], Arry2):
    # 拼接对应位置的两个值为新子数组
    merged_values.append([sub_arr[0], num])

# 组装最终输出结构
output = [{"key": source["key"], "values": merged_values}]

简洁列表推导写法

output = [
    {
        "key": Arry1[0]["key"],
        "values": [[sub[0], num] for sub, num in zip(Arry1[0]["values"], Arry2)]
    }
]

以上两段代码运行后都能得到目标结构的输出。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 04:03:30