日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Python 無限級分類樹狀結構生成算法的實現(xiàn)

瀏覽:29日期:2022-06-29 13:46:44

后端研發(fā)的同學對無限級分類肯定映像深刻,當初花了不少時間吧?

無限級分類樹狀結構的應用場景很多,例如后端研發(fā)需要把用戶相關權限讀取出來并生成樹狀結構,前端研發(fā)拿到權限樹之后可以按照結構展示用戶有權限訪問的欄目;再例如網(wǎng)頁上的欄目分級:

Python 無限級分類樹狀結構生成算法的實現(xiàn)

作者在初次接觸樹狀結構生成需求的時候,也是撓頭,后來找到了一個代碼少且清晰易懂的生成算法:遞歸。

首先,確保數(shù)據(jù)庫中存儲的類別信息如下:

[ {'id': 1, 'name': ’電器’, 'parent': 0}, {'id': 2, 'name': ’水果’, 'parent': 0}, {'id': 3, 'name': ’家用電器’, 'parent': 1}, {'id': 4, 'name': ’電吹風’, 'parent': 3}, {'id': 5, 'name': ’電風扇’, 'parent': 3}, {'id': 6, 'name': ’臺燈’, 'parent': 3}, {'id': 7, 'name': ’商用電器’, 'parent': 1}, {'id': 8, 'name': ’大型電熱鍋’, 'parent': 7},]

字段 parent 記錄的是此條目的父編號,例如電吹風的父編號是 3,即電吹風屬于家用電器,而家用電器的父編號是 1,即家用電器屬于電器類產(chǎn)品。電吹風條目跟電器條目并無直接的標識進行關聯(lián),但需要用樹狀結構來表明 電器 <- 家用電器 <- 電吹風 的關系。

通過 parent 尋找父編號,并建立關聯(lián)關系的操作實際上是循環(huán)往復的,直到找完所有的結點,這跟遞歸算法非常契合,很輕松便能寫出對應的遞歸代碼:

def generate_tree(source, parent): tree = [] for item in source: if item['parent'] == parent: item['child'] = generate_tree(source, item['id']) tree.append(item) return tree

只需要將數(shù)據(jù)庫中存儲的信息傳遞給 generate_tree 函數(shù)即可。這段遞歸代碼在往復循環(huán)的過程中通過 parent 來尋找子結點,找到子結點后將其添加到樹中。完整代碼如下:

import jsondef generate_tree(source, parent): tree = [] for item in source: if item['parent'] == parent: item['child'] = generate_tree(source, item['id']) tree.append(item) return treeif __name__ == ’__main__’: permission_source = [ {'id': 1, 'name': ’電器’, 'parent': 0}, {'id': 2, 'name': ’水果’, 'parent': 0}, {'id': 3, 'name': ’家用電器’, 'parent': 1}, {'id': 4, 'name': ’電吹風’, 'parent': 2}, {'id': 5, 'name': ’電風扇’, 'parent': 3}, {'id': 6, 'name': ’臺燈’, 'parent': 3}, {'id': 7, 'name': ’商用電器’, 'parent': 1}, {'id': 8, 'name': ’大型電熱鍋’, 'parent': 7}, ] permission_tree = generate_tree(permission_source, 0) print(json.dumps(permission_tree, ensure_ascii=False))

你試試運行一下,看看結構是否符合預期。

使用緩存優(yōu)化算法

遞歸算法中有很多重復的計算,這些計算不僅占用額外資源,還會降低函數(shù)執(zhí)行效率,因此需要對遞歸進行優(yōu)化。這里選用緩存優(yōu)化法提升函數(shù)執(zhí)行效率。

基本思路是每次找到結點關系后將此條目的編號添加到一個列表中緩存起來,代表此條目已找到結點關系。當往復循環(huán)執(zhí)行函數(shù)時再次遇到此條目可以跳過。代碼改動很簡單,增加一個緩存列表和控制流語句即可:

def generate_tree(source, parent, cache=[]): tree = [] for item in source: if item['id'] in cache: continue if item['parent'] == parent: cache.append(item['id']) item['child'] = generate_tree(source, item['id'], cache) tree.append(item) return tree

至此,無限級分類樹狀結構生成算法完成。你學會了嗎?

到此這篇關于Python 無限級分類樹狀結構生成算法的實現(xiàn)的文章就介紹到這了,更多相關Python 無限級分類樹狀結構內容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持好吧啦網(wǎng)!

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲国产专区| 日韩va欧美va亚洲va久久| 日韩制服丝袜先锋影音| 亚洲午夜av| 久久精品青草| 国产精品日韩精品中文字幕| 亚洲精选久久| 亚洲一区欧美| 亚洲人亚洲人色久| 久久国产精品亚洲77777| 夜夜嗨一区二区| 国产一级一区二区| 日韩在线一区二区| 日韩精品视频网| 亚洲人成精品久久久| 亚洲一区二区日韩| 日本久久二区| 国产女人18毛片水真多18精品| 亚洲一区二区小说| 日本午夜精品视频在线观看| 四虎精品一区二区免费| 综合在线一区| 国产精品草草| 国产96在线亚洲| 999国产精品| 香蕉久久国产| 国产精品免费99久久久| 日韩一区二区在线免费| 午夜在线播放视频欧美| 国产美女久久| 欧美日韩中文一区二区| 国产日产一区| 日本欧美不卡| 日韩av中文字幕一区二区| 美女精品视频在线| 久久久噜噜噜| 亚洲精品激情| 中文字幕在线视频网站| 国模 一区 二区 三区| 日韩精品国产欧美| 久久网站免费观看| 婷婷久久免费视频| 91精品韩国| 亚洲精品乱码日韩| 国产精品白丝久久av网站| 国产精品久久观看| 免费看的黄色欧美网站 | 久久久亚洲欧洲日产| 精品国产一区二区三区性色av| 久久久久黄色| 狠狠久久婷婷| 国产欧美视频在线| 久久青草久久| 四虎精品永久免费| 日韩在线观看不卡| 亚洲精品护士| 精品三级在线观看视频| 亚洲www啪成人一区二区| 亚洲精品裸体| 日韩免费看片| 国产精品对白| 国产一级一区二区| 国产精品专区免费| 亚洲精品护士| 精品视频一区二区三区四区五区 | 激情婷婷亚洲| 精品国产一区二区三区av片| 蜜桃传媒麻豆第一区在线观看| 国产精品2023| 亚洲字幕久久| 久久久久久久久丰满| 丝袜av一区| 久久精品日韩欧美| 日本不卡不码高清免费观看 | 亚洲精品88| 国产日韩三级| 日本不卡不码高清免费观看 | 精品国产精品久久一区免费式| 婷婷成人基地| 日韩在线观看不卡| 免费在线欧美黄色| 97久久超碰| 日本在线不卡视频| 日韩精品一区二区三区中文| 免费的成人av| 亚洲精品大全| 久久aⅴ国产紧身牛仔裤| 亚洲一区久久| 三级欧美韩日大片在线看| 欧美另类专区| 日韩一区二区三区免费播放| a国产在线视频| 日韩在线二区| 欧美美女一区| 亚洲一区亚洲| 欧美一区久久| 日本免费一区二区视频| 日本va欧美va精品发布| 久久国产人妖系列| 美女视频黄免费的久久| 老鸭窝一区二区久久精品| 国产一区二区三区网| 夜鲁夜鲁夜鲁视频在线播放| 激情欧美丁香| 日本不卡高清视频| 国产精品资源| 黄在线观看免费网站ktv| 亚洲午夜视频| 欧美一级网址| 久久伊人久久| 亚洲黄色影院| 色综合视频一区二区三区日韩 | 国产伦久视频在线观看| 一区视频在线| 亚洲欧美在线综合| 精品资源在线| 国产亚洲网站| 国产一区二区三区四区| 亚洲国产一区二区在线观看| 亚洲精品系列| 欧美天堂视频| 日韩区欧美区| 999视频精品| 五月亚洲婷婷 | 亚洲精品日本| 欧产日产国产精品视频| 日韩黄色在线观看| 欧洲一级精品| 深夜日韩欧美| 激情综合亚洲| 精品亚洲a∨一区二区三区18| 蜜臀国产一区二区三区在线播放 | 久久国产99| 欧美精品成人| 亚洲精品欧洲| 欧美日韩国产在线观看网站| 久草精品视频| 国产欧美日韩精品高清二区综合区 | 国产精品一级在线观看| 日本大胆欧美人术艺术动态| 一区二区亚洲精品| 日韩精品一二三区| 日本亚洲视频在线| 欧美日一区二区三区在线观看国产免 | 自由日本语亚洲人高潮| 日韩中文字幕91| 欧美久久一区二区三区| 久久91视频| 久久影视一区| 青青青国产精品| 伊伊综合在线| 亚洲国产成人精品女人| 亚洲精品四区| 免费一级欧美在线观看视频| 日韩毛片在线| 日韩福利在线观看| 色婷婷亚洲mv天堂mv在影片| 精品一区在线| 国产欧美一级| 99久久九九| 欧美精品国产| 久久在线免费| 国产精品mm| 三级一区在线视频先锋| 成人国产精品| 亚洲乱码视频| 亚洲精品88| 欧美天堂一区| 久久国产免费看| 国产亚洲高清视频| 国产在线不卡一区二区三区| 免费在线成人网| 狠狠干综合网| 日韩欧美精品综合| 国产欧美自拍| 蜜桃视频一区二区三区| 高清av不卡| 国产精品主播| 亚洲欧洲国产精品一区| 三级精品视频| 精品国产欧美日韩| 精品中文一区| jizzjizz中国精品麻豆| 国产精品宾馆| 欧美一级全黄| 亚洲欧美网站在线观看| 国产高清一区二区| 香蕉人人精品| 亚洲国产专区| 在线日韩电影| 日本欧美不卡| 欧产日产国产精品视频| 都市激情国产精品| 成人在线黄色| 国产在线观看www| 欧美aa在线观看| 国产一区二区三区四区五区| 国产精品国产三级在线观看| 国产精品网站在线看| 国产精品亲子伦av一区二区三区|