數據結構:create table web_class ( "id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "name" varchar(255) NOT NULL, --名稱
"bid" integer, --上級ID)數據庫數據:{id:1, name:'名稱1', bid:0}{id:2, name:'名稱2', bid:0}{id:3, name:'名稱3', bid:1}{id:4, name:'名稱4', bid:1}{id:5, name:'名稱5', bid:3}{id:6, name:'名稱6', bid:5}...需要實現的樹形菜單(類似如下):[{'bid':0,'id':1,'name':'名稱1', 'son':[
{'bid':1,'id':3,'name':'名稱3', 'son':[
{'bid':3,'id':5,'name':'名稱5', 'son':[
{'bid':3,'id':6,'name':'名稱6','son':[]}
]
}
]
},
{'bid':1,'id':4,'name':'名稱4','son':[]}
]
},
{'bid':0,'id':2,'name':'名稱2','son':[]}]如能講解下原理最好了。
2 回答
搖曳的薔薇
TA貢獻1793條經驗 獲得超6個贊
我自己研究寫出來的一個函數(線型菜單轉樹形菜單):
def xTree(datas):
lists=[] tree={}
parent_id=''
for i in datas:
item=i tree[item['id']]=item
root=None for i in datas:
obj=i if not obj['bid']:
root=tree[obj['id']]
lists.append(root) else:
parent_id=obj['bid'] if 'children' not in tree[parent_id]:
tree[parent_id]['children']=[] tree[parent_id]['children'].append(tree[obj['id']])
return lists
print(xTree(data))添加回答
舉報
0/150
提交
取消
