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

Python二维数组重复关联元素嵌套整合实现求助

二维数组嵌套整合实现方案

需求说明

将二维数组:

lines = [[0,1],[0,2],[0,3],[1,4],[1,5],[2,6],[3,7],[3,8],[3,9]]

整合为嵌套层级结构:

[0,[1,[4],[5]],[2,[6]],[3,[7],[8],[9]]]

原代码错误分析

  • 索引越界原因:代码中lines[j][i]的写法完全错误,lines的每个子数组只有2个元素(索引0和1),但循环中i会遍历0到8,当i≥2时必然触发IndexError。
  • 逻辑错误:没有按父元素分组构建层级,只是盲目追加元素,无法形成需求中的嵌套结构。

正确实现方法

方法一:递归构建(通用型,支持任意层级嵌套)

先通过字典建立父节点到子节点的映射,再用递归生成嵌套结构:

lines = [[0,1],[0,2],[0,3],[1,4],[1,5],[2,6],[3,7],[3,8],[3,9]]

# 构建父节点与子节点的映射关系
parent_child_map = {}
for parent, child in lines:
    if parent not in parent_child_map:
        parent_child_map[parent] = []
    parent_child_map[parent].append(child)

# 递归生成嵌套结构
def build_nested_tree(node):
    tree_node = [node]
    # 如果当前节点存在子节点,递归处理每个子节点
    if node in parent_child_map:
        for child_node in parent_child_map[node]:
            tree_node.append(build_nested_tree(child_node))
    return tree_node

# 从根节点0开始构建
result = build_nested_tree(0)
print(result)

方法二:固定层级循环(适用于已知层级的场景)

如果确定数据只有三层(根节点→一级子节点→二级子节点),可以直接用循环实现:

lines = [[0,1],[0,2],[0,3],[1,4],[1,5],[2,6],[3,7],[3,8],[3,9]]

# 初始化根节点
result = [0]

# 处理0的每个一级子节点
for parent in [1, 2, 3]:
    child_group = [parent]
    # 收集当前父节点的所有二级子节点
    for p, c in lines:
        if p == parent:
            child_group.append([c])
    result.append(child_group)

print(result)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 02:15:38