數據結構: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
提交
取消