python 树形菜单无限极分类怎样实现?

数据结构:

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':[]}]

如能讲解下原理最好了。


海绵宝宝撒
浏览 2253回答 2
2回答

摇曳的蔷薇

我自己研究写出来的一个函数(线型菜单转树形菜单):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))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python