如何编写通用循环将树形层级列表转换为嵌套字典结构?
通用层级列表转嵌套字典的实现方案
嘿,我来帮你搞定这个把(层级, 项)列表转成嵌套字典的需求!这个问题的核心是跟踪每个层级对应的父节点,只要把这个逻辑理清楚,就能写出适配任意树形结构的通用循环。
思路解析
咱们可以用一个字典来记录每个层级当前对应的父节点(比如叫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
相关产品推荐
相关产品推荐

