77 lines
1.8 KiB
Python
77 lines
1.8 KiB
Python
# Author 臧成龙
|
||
# coding=utf-8
|
||
# @Time : 2022/5/16 21:09
|
||
# @File : list_to_tree.py
|
||
# @Software: PyCharm
|
||
# @qq: 939589097
|
||
|
||
def add_node(p, node):
|
||
# ⼦节点list
|
||
p["children"] = []
|
||
for n in node:
|
||
if n.get("parent_id") == p.get("id"):
|
||
p["children"].append(n)
|
||
# 递归⼦节点,查找⼦节点的节点
|
||
for t in p["children"]:
|
||
if not t.get("children"):
|
||
t["children"] = []
|
||
t["children"].append(add_node(t, node))
|
||
# 退出递归的条件
|
||
if len(p["children"]) == 0:
|
||
p.pop('children')
|
||
p["choice"] = 1
|
||
return
|
||
|
||
|
||
def list_to_route(data):
|
||
root = []
|
||
node = []
|
||
# 初始化数据,获取根节点和其他子节点list
|
||
for d in data:
|
||
d['meta'] = {
|
||
'title': d.pop('title'),
|
||
'ignoreKeepAlive': d.pop('keepalive'),
|
||
'orderNo': d.pop('sort'),
|
||
'hideMenu': d.pop('hide_menu'),
|
||
'icon': d.pop('icon')
|
||
}
|
||
|
||
d["choice"] = 0
|
||
if d.get("parent_id") is None:
|
||
root.append(d)
|
||
else:
|
||
node.append(d)
|
||
# print("root----",root)
|
||
# print("node----",node)
|
||
# 查找子节点
|
||
for p in root:
|
||
add_node(p, node)
|
||
# 无子节点
|
||
if len(root) == 0:
|
||
return node
|
||
|
||
return root
|
||
|
||
|
||
def list_to_tree(data):
|
||
root = []
|
||
node = []
|
||
# 初始化数据,获取根节点和其他子节点list
|
||
|
||
for d in data:
|
||
d["choice"] = 0
|
||
if d.get("parent_id") is None:
|
||
root.append(d)
|
||
else:
|
||
node.append(d)
|
||
# print("root----",root)
|
||
# print("node----",node)
|
||
# 查找子节点
|
||
for p in root:
|
||
add_node(p, node)
|
||
# 无子节点
|
||
if len(root) == 0:
|
||
return node
|
||
|
||
return root
|