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

如何编写通用循环将树形层级列表转换为嵌套字典结构?

通用层级列表转嵌套字典的实现方案

嘿,我来帮你搞定这个把(层级, 项)列表转成嵌套字典的需求!这个问题的核心是跟踪每个层级对应的父节点,只要把这个逻辑理清楚,就能写出适配任意树形结构的通用循环。

思路解析

咱们可以用一个字典来记录每个层级当前对应的父节点(比如叫level_track),然后遍历每一条(层级, 项)数据:

  • 层级0的项是根节点的直接子项
  • 层级N的项,它的父节点就是层级N-1当前对应的节点
  • 每处理完一个项,就更新level_track中对应层级的节点引用,方便后续同层级或子层级的项找到正确的父节点

代码实现(Python)

def build_nested_dict(items):
    root = {}
    level_track = {}  # 记录每个层级当前的父节点字典

    for level, item in items:
        # 创建当前项对应的子字典
        current_node = {}
        # 处理根层级(level=0)
        if level == 0:
            root[item] = current_node
        else:
            # 找到上一层级的父节点,添加当前项
            parent_node = level_track[level - 1]
            parent_node[item] = current_node
        # 更新当前层级的跟踪节点
        level_track[level] = current_node

    return root

# 测试你提供的示例数据
sample_items = [
    (0, 'Job=XYZ'),
    (1, 'Input Options Display'),
    (1, 'Abend S=0C7 (DEMO)'),
    (2, 'Abending Statement'),
    (3, 'Procedure DEMO'),
    (4, 'Variables'),
    (3, 'Storage'),
    (2, 'Program DEMO2'),
    (3, 'Storage'),
    (1, 'Execution Summary')
]

result = build_nested_dict(sample_items)
print(result)

输出结果(格式化后)

{
    'Job=XYZ': {
        'Input Options Display': {},
        'Abend S=0C7 (DEMO)': {
            'Abending Statement': {
                'Procedure DEMO': {
                    'Variables': {}
                },
                'Storage': {}
            },
            'Program DEMO2': {
                'Storage': {}
            }
        },
        'Execution Summary': {}
    }
}

通用性说明

这个循环完全是通用的:

  • 不管你的树形结构有多少层(哪怕是10层、20层),只要输入的列表是(层级, 项)的格式,就能正确生成嵌套字典
  • 同层级的多个项会自动挂载到对应的父节点下,子层级的项也会找到最近的上层父节点
  • 即使树形结构的分支数量、深度各不相同,逻辑依然成立

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:58:51