码迷,mamicode.com
首页 > 数据库 > 详细

使用 python 遍历出数据库中三级菜单

时间:2020-09-17 15:48:31      阅读:33      评论:0      收藏:0      [点我收藏+]

标签:pre   python   rate   turn   enumerate   pen   遍历   play   def   

 

昨天面试的时候提到了这个问题,但是由于面试时有点紧张,加上之前没做过这个,没写出来,今天补出来。

code

a=[
    {"id":1,"menu_name":"菜单1","pid":0},
    {"id":2,"menu_name":"菜单1-1","pid":1},
    {"id":3,"menu_name":"菜单1-2","pid":1},
    {"id":4,"menu_name":"菜单1-3","pid":1},
    {"id":5,"menu_name":"菜单1-1-1","pid":2},
    {"id":6,"menu_name":"菜单1-1-2","pid":2},
    {"id":7,"menu_name":"菜单2","pid":0},
    {"id":8,"menu_name":"菜单2-1","pid":7},
    {"id":9,"menu_name":"菜单2-2","pid":7},
    {"id":10,"menu_name":"菜单2-3","pid":7},
    {"id":11,"menu_name":"菜单2-1-1","pid":8},
    {"id":12,"menu_name":"菜单2-1-2","pid":8},
    {"id":13,"menu_name":"菜单2-2-1","pid":9},
    {"id":14,"menu_name":"菜单2-3-1","pid":10},
    {"id":15,"menu_name":"菜单2-3-2","pid":10},
    {"id":16,"menu_name":"菜单2-3-3","pid":10},
    {"id":17,"menu_name":"菜单2-3-4","pid":10}
]


def get_menu(a):
    dic_test={}
    for tcc in a:
        if(tcc["pid"]==0):
            dic_test[tcc["menu_name"]]={"id":tcc["id"],"child":[]}

    for i in dic_test:
        index1=dic_test[i]["id"]
        menu_name1=i
        for j in a:
            if(j["pid"]==index1):
                dic_test[menu_name1]["child"].append({j["menu_name"]:{"id":j["id"],"child":[]}})

        if(dic_test[menu_name1]["child"]):
            for indexc,k in enumerate(dic_test[menu_name1]["child"]):
                for l in a:
                    for x,b in k.items():
                        if(b["id"]==l["pid"]):
                            dic_test[menu_name1]["child"][int(indexc)][x]["child"].append({l["menu_name"]:{"id":l["id"],"child":[]}})
    return dic_test

print(get_menu(a))

#输出
‘‘‘
{
    菜单1: {
        id: 1,
        child: [{
            菜单1-1: {
                id: 2,
                child: [{
                    菜单1-1-1: {
                        id: 5,
                        child: []
                    }
                }, {
                    菜单1-1-2: {
                        id: 6,
                        child: []
                    }
                }]
            }
        }, {
            菜单1-2: {
                id: 3,
                child: []
            }
        }, {
            菜单1-3: {
                id: 4,
                child: []
            }
        }]
    },
    菜单2: {
        id: 7,
        child: [{
            菜单2-1: {
                id: 8,
                child: [{
                    菜单2-1-1: {
                        id: 11,
                        child: []
                    }
                }, {
                    菜单2-1-2: {
                        id: 12,
                        child: []
                    }
                }]
            }
        }, {
            菜单2-2: {
                id: 9,
                child: [{
                    菜单2-2-1: {
                        id: 13,
                        child: []
                    }
                }]
            }
        }, {
            菜单2-3: {
                id: 10,
                child: [{
                    菜单2-3-1: {
                        id: 14,
                        child: []
                    }
                }, {
                    菜单2-3-2: {
                        id: 15,
                        child: []
                    }
                }, {
                    菜单2-3-3: {
                        id: 16,
                        child: []
                    }
                }, {
                    菜单2-3-4: {
                        id: 17,
                        child: []
                    }
                }]
            }
        }]
    }
}
‘‘‘

 

 

 

 

 

 

使用 python 遍历出数据库中三级菜单

标签:pre   python   rate   turn   enumerate   pen   遍历   play   def   

原文地址:https://www.cnblogs.com/sea-stream/p/13620240.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!