Python3 递归实现任意深度嵌套字典到指定树结构的转换方法
嵌套字典转标准化树结构Python 3实现方案
核心实现逻辑
通过递归遍历每一层字典的键值对,对每个节点做标准化封装:无实际子节点的叶子节点仅保留title、key两个字段,存在子节点的节点挂载children数组存储所有下级节点,完全匹配目标结构要求。
可直接运行的代码
def _build_node(node_label, node_value): # 生成基础节点结构 built_node = { "title": node_label, "key": node_label } # 仅当节点存在非空子项时,才添加children字段,避免生成空children数组 if node_value: built_node["children"] = [ _build_node(child_label, child_value) for child_label, child_value in node_value.items() ] return built_node def transform_nested_dict(raw_nested_dict): # 原嵌套字典最外层为单根节点结构,提取根节点信息完成转换 root_label, root_value = next(iter(raw_nested_dict.items())) return _build_node(root_label, root_value)
调用示例
# 输入样例字典 sample_dict = { 'root_node': { 'child_1': { 'child_1a': { 'child_1a_a': {}, 'child_1a_b': {} }, 'child_1b': { 'child_1b_a': { 'child_1b_a_a': {}, 'child_1b_a_b': {} }, 'child_1b_b': { 'child_1b_b_a': {} }, 'child_1b_c': {} } }, 'child_2': {} } } # 执行转换 tree_output = transform_nested_dict(sample_dict)
实现匹配说明
- 完全对齐目标结构要求:所有节点的
title、key字段直接取原字典的节点名称,无额外自定义生成逻辑 - 细节处理和样例输出一致:原字典值为空的叶子节点,不会生成空的
children字段,和样例中child_1b_c这类节点的输出格式完全匹配(也规避了多数递归实现常见的“强制给所有节点加空children数组”的踩坑问题) - 支持任意深度嵌套:递归逻辑没有硬编码层级限制,只要原嵌套字典的深度在Python默认递归上限内即可正常转换
- 无第三方依赖:纯标准库实现,兼容Python 3.6及以上所有3.x版本
内容的提问来源于stack exchange,提问作者nb123
相关产品推荐
相关产品推荐

