有时候需要返回树状结构,可以尝试以下思路,不对请指导。
# 字典列表如下
lists = [
{"id": 1, "name": "a1", "pid": 0},
{"id": 2, "name": "a1_2", "pid": 1},
{"id": 3, "name": "a1_3", "pid": 1},
{"id": 4, "name": "a1_4", "pid": 1},
{"id": 5, "name": "a2_1", "pid": 2},
{"id": 6, "name": "a2_2", "pid": 2},
]
我想将他转成这样的树状结构
[
{
"id":1,
"name":"a1",
"pid":0,
"sub":[
{
"id":2,
"name":"a1_2",
"pid":1,
"sub":[
{
"id":5,
"name":"a2_1",
"pid":2,
"sub":[]
},
{
"id":6,
"name":"a2_2",
"pid":2,
"sub":[]
}
]
},
{
"id":3,
"name":"a1_3",
"pid":1,
"sub":[ ]
},
{
"id":4,
"name":"a1_4",
"pid":1,
"sub":[]
}
]
}
]
于是马上撸代码
def list_to_tree(index, dict_list, sub_field="sub", pid_field="pid", id_field="id"):
sub = []
for x in dict_list:
if x[pid_field] == index:
x[sub_field] = list_to_tree(x[id_field], dict_list)
sub.append(x)
return sub
print(list_to_tree(0, lists))