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
相关产品推荐
相关产品推荐

