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

如何将字典列表按父子关系转换为层级字典结构?

解决字典列表转层级结构问题

实现思路

  1. 建立ID映射表:将所有元素按_id存入字典,实现父节点的O(1)快速查找。
  2. 构建层级关系:遍历每个元素,若存在parent_id则将其添加到对应父节点的children列表(同时移除parent_id字段);无parent_id的元素直接作为根节点存入结果列表。
  3. 支持多层嵌套:由于映射表预先包含所有元素,即使子节点先被处理,父节点也已存在,可正确构建任意深度的嵌套结构。

代码实现

data = [
    {"_id": 1, "label": "Property", "index": 1},
    {"_id": 2, "label": "Find Property", "index": 1, "parent_id": 1},
    {"_id": 3, "label": "Add Property", "index": 2, "parent_id": 1},
    {"_id": 4, "label": "Offer", "index": 2},
    {"_id": 5, "label": "My Offer", "index": 1, "parent_id": 4},
    {"_id": 6, "label": "Accept", "index": 1, "parent_id": 5}
]

# 建立ID到元素的映射
item_map = {item["_id"]: item for item in data}
root_nodes = []

for item in data:
    parent_id = item.get("parent_id")
    if parent_id is not None:
        # 获取父节点并初始化children列表
        parent = item_map[parent_id]
        parent.setdefault("children", [])
        # 移除子节点的parent_id字段
        del item["parent_id"]
        # 将子节点加入父节点的children
        parent["children"].append(item)
    else:
        # 无父节点的元素作为根节点
        root_nodes.append(item)

# 格式化输出结果
import json
print(json.dumps(root_nodes, indent=4))

运行结果

输出与预期完全一致:

[
    {
        "_id": 1,
        "label": "Property",
        "index": 1,
        "children": [
            {
                "_id": 2,
                "label": "Find Property",
                "index": 1
            },
            {
                "_id": 3,
                "label": "Add Property",
                "index": 2
            }
        ]
    },
    {
        "_id": 4,
        "label": "Offer",
        "index": 2,
        "children": [
            {
                "_id": 5,
                "label": "My Offer",
                "index": 1,
                "children": [
                    {
                        "_id": 6,
                        "label": "Accept",
                        "index": 1
                    }
                ]
            }
        ]
    }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 10:55:16