python 利用列表的浅拷贝(不用递归)实现递归效果, 生成层级菜单建树数据

def build_tree(menu_data):
    # add children
    for index, i in enumerate(menu_data):
        for j in menu_data:
            if i["id"]==j["parentId"]:
                if "children" not in menu_data[index].keys():
                    menu_data[index]["children"] = []
                menu_data[index]["children"].append(j)

    res = [i for i in menu_data if i["parentId"]=="0"]
    return res
# 测试数据
data = [
    {
      "blank": "false",
      "cache": "false",
      "component": "Layout",
      "icon": "eicon-setting",
      "id": "5d2d6d6810004bc421d13a55",
      "name": "sys",
      "parentId": "0",
      "path": "/admin",
      "permissions": "",
      "query": "",
      "sort": "1",
      "title": "系统设置",
      "type": "0",
      "url": ""
    },
    {
      "blank": "false",
      "cache": "false",
      "component": "Layout",
      "icon": "eicon-setting",
      "id": "5d2d6d684bc421d131000a55",
      "name": "sys",
      "parentId": "5d2d6d6810004bc421d13a55",
      "path": "/admin",
      "permissions": "",
      "query": "",
      "sort": "1",
      "title": "系统设置",
      "type": "0",
      "url": ""
    },
    {
      "blank": "false",
      "cache": "false",
      "component": "Layout",
      "icon": "eicon-setting",
      "id": "5d2d6d6814bc421d10003a55",
      "name": "sys",
      "parentId": "0",
      "path": "/admin",
      "permissions": "",
      "query": "",
      "sort": "1",
      "title": "系统设置",
      "type": "0",
      "url": ""
    },
    {
      "blank": "false",
      "cache": "true",
      "component": "admin/menu",
      "icon": "eicon-menu",
      "id": "5d2e832314bc4247ac006727",
      "name": "sys-menu",
      "parentId": "5d2d6d6814bc421d10003a55",
      "path": "/menu",
      "permissions": "sys_menu_list",
      "query": "",
      "sort": "1",
      "title": "菜单管理",
      "type": "0",
      "url": ""
    },
    {
      "blank": "false",
      "cache": "true",
      "component": "admin/menu",
      "icon": "eicon-menu",
      "id": "5d2e83ac00672314bc424727",
      "name": "sys-menu",
      "parentId": "5d2e832314bc4247ac006727",
      "path": "/menu",
      "permissions": "sys_menu_list",
      "query": "",
      "sort": "1",
      "title": "菜单管理",
      "type": "0",
      "url": ""
    },
]
# 测试
b = build_tree(data)
print(b)

运行结果:

[
    {
        "blank": "false",
        "cache": "false",
        "component": "Layout",
        "icon": "eicon-setting",
        "id": "5d2d6d6810004bc421d13a55",
        "name": "sys",
        "parentId": "0",
        "path": "/admin",
        "permissions": "",
        "query": "",
        "sort": "1",
        "title": "系统设置",
        "type": "0",
        "url": "",
        "children": [
            {
                "blank": "false",
                "cache": "false",
                "component": "Layout",
                "icon": "eicon-setting",
                "id": "5d2d6d684bc421d131000a55",
                "name": "sys",
                "parentId": "5d2d6d6810004bc421d13a55",
                "path": "/admin",
                "permissions": "",
                "query": "",
                "sort": "1",
                "title": "系统设置",
                "type": "0",
                "url": ""
            }
        ]
    },
    {
        "blank": "false",
        "cache": "false",
        "component": "Layout",
        "icon": "eicon-setting",
        "id": "5d2d6d6814bc421d10003a55",
        "name": "sys",
        "parentId": "0",
        "path": "/admin",
        "permissions": "",
        "query": "",
        "sort": "1",
        "title": "系统设置",
        "type": "0",
        "url": "",
        "children": [
            {
                "blank": "false",
                "cache": "true",
                "component": "admin/menu",
                "icon": "eicon-menu",
                "id": "5d2e832314bc4247ac006727",
                "name": "sys-menu",
                "parentId": "5d2d6d6814bc421d10003a55",
                "path": "/menu",
                "permissions": "sys_menu_list",
                "query": "",
                "sort": "1",
                "title": "菜单管理",
                "type": "0",
                "url": "",
                "children": [
                    {
                        "blank": "false",
                        "cache": "true",
                        "component": "admin/menu",
                        "icon": "eicon-menu",
                        "id": "5d2e83ac00672314bc424727",
                        "name": "sys-menu",
                        "parentId": "5d2e832314bc4247ac006727",
                        "path": "/menu",
                        "permissions": "sys_menu_list",
                        "query": "",
                        "sort": "1",
                        "title": "菜单管理",
                        "type": "0",
                        "url": ""
                    }
                ]
            }
        ]
    }
]

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值