精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Python實用代碼-無限級分類樹狀結構生成算法

開發 前端 算法
無限級分類樹狀結構的應用場景很多,例如后端研發需要把用戶相關權限讀取出來并生成樹狀結構,前端研發拿到權限樹之后可以按照結構展示用戶有權限訪問的欄目

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

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

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

首先,確保數據庫中存儲的類別信息如下:

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

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

版權水印 微信公眾號 Python 編程參考

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

  1. def generate_tree(source, parent): 
  2.  tree = [] 
  3.  for item in source: 
  4.  if item["parent"] == parent: 
  5.  item["child"] = generate_tree(source, item["id"]) 
  6.  tree.append(item) 
  7.  return tree 

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

  1. import json 
  2. def generate_tree(source, parent): 
  3.  tree = [] 
  4.  for item in source: 
  5.  if item["parent"] == parent: 
  6.  item["child"] = generate_tree(source, item["id"]) 
  7.  tree.append(item) 
  8.  return tree 
  9. if __name__ == '__main__'
  10.  permission_source = [ 
  11.  {"id"1"name"'電器'"parent"0}, 
  12.  {"id"2"name"'水果'"parent"0}, 
  13.  {"id"3"name"'家用電器'"parent"1}, 
  14.  {"id"4"name"'電吹風'"parent"2}, 
  15.  {"id"5"name"'電風扇'"parent"3}, 
  16.  {"id"6"name"'臺燈'"parent"3}, 
  17.  {"id"7"name"'商用電器'"parent"1}, 
  18.  {"id"8"name"'大型電熱鍋'"parent"7}, 
  19.  ] 
  20.  permission_tree = generate_tree(permission_source, 0
  21.  print(json.dumps(permission_tree, ensure_ascii=False)) 

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

使用緩存優化算法

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

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

  1. def generate_tree(source, parent, cache=[]): 
  2.  tree = [] 
  3.  for item in source: 
  4.  if item["id"] in cache: 
  5.  continue 
  6.  if item["parent"] == parent: 
  7.  cache.append(item["id"]) 
  8.  item["child"] = generate_tree(source, item["id"], cache) 
  9.  tree.append(item) 
  10.  return tree 

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

責任編輯:張燕妮 來源: segmentfault.com
相關推薦

2011-03-28 14:57:58

不重復隨機數列生成

2021-11-07 14:33:48

算法Pairwise功能

2017-07-14 10:35:06

2017-01-03 15:16:56

Tofsee僵尸網絡惡意軟件

2022-01-27 10:06:29

生成算法分布式

2021-03-22 10:05:03

算法可視化大數據

2012-02-16 08:27:14

安全漏洞RSA算法

2016-12-28 10:45:39

2021-06-11 06:10:09

Python數據結構算法

2023-06-14 15:51:48

JavaScript

2009-11-27 16:47:36

PHP無限分類

2018-04-12 11:20:16

MySQLmybatisJava

2021-04-15 09:36:44

Java數據結構算法

2015-10-09 10:59:26

算法分類

2015-10-30 16:09:23

分類算法總結

2021-08-24 23:23:35

Python工具開發

2020-12-23 11:08:10

Python代碼文本

2010-09-02 10:10:03

SQL刪除

2022-01-26 07:25:09

PythonRSA加解密
點贊
收藏

51CTO技術棧公眾號

亚洲精品中文字幕有码专区| 欧美日韩国产色视频| 成人高清视频观看www| 我要看黄色一级片| 国产精品成人自拍| 欧美在线色视频| 免费的一级黄色片| 蜜芽tv福利在线视频| 久久激情五月婷婷| 韩国精品久久久999| 97在线观看免费视频| 免费欧美网站| 在线精品视频小说1| 超级碰在线观看| 欧美老女人性开放| 国产精品77777| 国产精品久久久久久一区二区| www.99re7| japanese国产精品| 精品国产露脸精彩对白 | 麻豆免费在线观看| 99久久国产综合精品麻豆| 国产一区视频在线播放| 二区视频在线观看| 亚洲婷婷在线| 久久精品国产欧美激情| aaaaa级少妇高潮大片免费看| 激情不卡一区二区三区视频在线| 色系网站成人免费| 久久久久久久9| 免费在线观看av网站| 久久久久久久综合日本| av噜噜色噜噜久久| av网站免费大全| 久久国产精品99久久久久久老狼| 欧美一级片一区| 国产一级片免费观看| 久久久久国产精品| 在线观看日韩视频| 在线观看日本中文字幕| 美日韩黄色大片| 欧美va亚洲va在线观看蝴蝶网| 亚洲一区二区在线视频观看| 怡红院成人在线| 第一福利永久视频精品| 国产一二三在线视频| 久草在线视频网站| 亚洲精品福利视频网站| 中国 免费 av| 成人短视频在线| 亚洲免费高清视频在线| 最新黄色av网站| 在线欧美三级| 亚洲黄色小说网站| 黑人巨茎大战欧美白妇| 日本无删减在线| 亚洲欧美电影院| 香蕉久久免费影视| 国产专区在线播放| 欧美国产一区二区| 一区二区成人国产精品 | 亚洲另类一区二区| 日本成人三级电影网站| 亚洲AV第二区国产精品| 久久久国产精华| 日韩欧美激情一区二区| 在线观看黄色av| 中文字幕亚洲一区二区av在线| 制服丝袜综合日韩欧美| 国产福利视频在线| 亚洲国产成人av| 日本黄色三级大片| 久草综合在线| 日韩一区二区三区观看| 无码一区二区精品| 欧美日韩国产在线观看网站| 在线精品高清中文字幕| 久久久久久久久久97| 亚洲色图88| 午夜精品久久17c| 无码日韩精品一区二区| 青青青爽久久午夜综合久久午夜| 成人a免费视频| 超碰福利在线观看| 91色九色蝌蚪| 自拍偷拍亚洲色图欧美| 青青在线视频| 欧美三级欧美成人高清www| 中文字幕国产传媒| 日韩三级av高清片| 国产丝袜一区二区三区免费视频| 精品日韩在线视频| 国内精品亚洲| 国产精品成久久久久三级| 国产精品一区二区三区在线免费观看 | 亚洲精品免费一二三区| 三上悠亚久久精品| 成人久久网站| 亚洲黄色av女优在线观看| av男人的天堂av| 欧美激情性爽国产精品17p| 51色欧美片视频在线观看| 岳乳丰满一区二区三区| 成人a区在线观看| 亚洲欧洲日韩综合二区| 国产盗摄——sm在线视频| 欧美视频在线不卡| 在线黄色免费网站| 91九色精品国产一区二区| 国语自产偷拍精品视频偷| 中文字幕人成人乱码亚洲电影| 国产91精品精华液一区二区三区 | 欧美精品97| 国产成人精品在线观看| 亚洲精品无码专区| 亚洲欧洲韩国日本视频| 37pao成人国产永久免费视频| 清纯唯美激情亚洲| 最近中文字幕mv在线一区二区三区四区| 久久精品国产亚洲AV无码男同 | 国产欧美日韩中文| 四虎在线免费观看| 一区二区三区精密机械公司| 亚洲成熟丰满熟妇高潮xxxxx| 中文字幕一区二区三区中文字幕| 中文字幕无线精品亚洲乱码一区 | 在线观看日本视频| 大白屁股一区二区视频| 国产精品美女在线播放| 日韩毛片在线| 亚洲天堂av图片| 日韩欧美国产亚洲| 国产激情91久久精品导航| 亚洲人成网站在线观看播放| 日本欧美日韩| 国产视频久久久久久久| 国产午夜福利片| 国产不卡一区视频| 欧美 亚洲 视频| 国产日韩中文在线中文字幕| 色777狠狠综合秋免鲁丝| aaa在线视频| 久久综合网色—综合色88| 国产精品成人久久电影| 99re8这里有精品热视频8在线| 久久精品这里热有精品| 91尤物国产福利在线观看| 国产精品久久看| 黄大色黄女片18第一次| 日韩精品一区二区久久| 国产日本欧美一区二区三区| av女优在线| 欧美日韩夫妻久久| 四虎永久免费在线| 国产91丝袜在线播放0| 亚洲爆乳无码精品aaa片蜜桃| 中文字幕日韩在线| 午夜精品福利视频| 日本福利午夜视频在线| 色久优优欧美色久优优| 蜜乳av中文字幕| 麻豆91在线观看| 亚洲免费视频播放| 1313精品午夜理伦电影| 久久免费成人精品视频| 亚洲 小说区 图片区 都市| 欧美性xxxx极品hd满灌| 国产伦精品一区二区三区视频女| 六月丁香婷婷色狠狠久久| 制服丝袜综合日韩欧美| 亚洲不卡视频| 欧美亚洲国产日本| av影片免费在线观看| 欧美高清视频一二三区 | 免费电影网站在线视频观看福利| 欧美大片日本大片免费观看| 亚洲精品www久久久久久| 久久久国际精品| 亚洲高清视频免费| 一本久道久久综合婷婷鲸鱼| 欧洲精品久久| 精品国产不卡一区二区| 97超级碰碰碰久久久| 国产精品久久一区二区三区不卡 | 久久精品a一级国产免视看成人 | 黄色小视频免费网站| 国产尤物精品| 日韩国产精品一区二区三区| 91亚洲精品在看在线观看高清| 久久久久亚洲精品| 国产粉嫩一区二区三区在线观看| 欧美一区二区在线播放| 成人精品免费在线观看| 国产精品久久777777| 欧美夫妇交换xxx| 免费在线一区观看| 很污的网站在线观看| 日韩欧美大片| 国产一区二区精品免费| 日本免费成人| 97超碰蝌蚪网人人做人人爽| 人人干在线视频| 日韩精品欧美国产精品忘忧草 | 一二三区免费视频| 亚洲男人的天堂在线观看| 免费黄色在线视频| 丁香天五香天堂综合| 特级丰满少妇一级| 亚洲深夜av| 成人在线视频一区二区三区| 欧美日韩激情| 免费日韩av电影| 97久久超碰| 成人性生交大片免费看视频直播 | 国产欧美综合精品一区二区| 欧美成人aaa| 国产成人+综合亚洲+天堂| 激情在线视频播放| 久久韩国免费视频| 成人精品福利| 亚洲欧洲高清在线| 婷婷丁香花五月天| 日韩精品最新网址| 91在线观看喷潮| 欧美色图天堂网| 综合网在线观看| 精品福利在线观看| 久久香蕉精品视频| 一区二区三区在线观看欧美| 中国1级黄色片| 欧美韩国一区二区| 中文字幕网站在线观看| 91捆绑美女网站| 艳妇乳肉豪妇荡乳xxx| 成人小视频免费观看| 欧美污在线观看| 国产麻豆精品在线| 蜜桃福利午夜精品一区| 捆绑调教一区二区三区| 亚欧美在线观看| 秋霞电影一区二区| www.亚洲高清| 蜜桃免费网站一区二区三区| 91香蕉视频导航| 日韩av电影天堂| 国产福利影院在线观看| 日韩国产高清影视| 色综合手机在线| 日韩av电影一区| 亚洲精品20p| 国产呦精品一区二区三区网站 | a在线欧美一区| 亚洲熟女一区二区| 91原创在线视频| 精品人妻少妇嫩草av无码| 久久久99精品久久| 无码人妻丰满熟妇啪啪欧美| 亚洲国产精品传媒在线观看| 91视频免费看片| 亚洲视频综合在线| 国产免费无码一区二区视频| 亚洲国产一二三| 日本三级一区二区| 色婷婷久久久综合中文字幕| 国产亚洲欧美日韩高清| 精品视频免费在线| 国产三级自拍视频| 亚洲国产精品高清久久久| 手机看片一区二区三区| 亚洲色图第三页| 欧美边添边摸边做边爱免费| 精品少妇一区二区30p| 2018av在线| 国产精品91久久| www一区二区三区| 国产视色精品亚洲一区二区| 九九免费精品视频在线观看| 天堂社区 天堂综合网 天堂资源最新版| 99精品网站| 日本手机在线视频| 日韩黄色小视频| 人妻巨大乳一二三区| 99精品热视频| 老司机深夜福利网站| 亚洲一区二区视频在线观看| www欧美在线| 欧美夫妻性生活| 午夜激情小视频| 日韩中文视频免费在线观看| av在线网页| 国产日韩亚洲欧美| 日韩av三区| 特级黄色录像片| 久久都是精品| 国产吃瓜黑料一区二区| 国产欧美视频一区二区| 69精品久久久| 欧美日韩一区高清| 午夜视频在线免费播放| 久久精品视频在线播放| av日韩电影| julia一区二区中文久久94| 欧美在线免费看视频| 久久香蕉视频网站| 免费人成网站在线观看欧美高清| 亚洲色图欧美另类| 成人免费小视频| 在线观看你懂的网站| 精品免费一区二区三区| 生活片a∨在线观看| 91福利视频在线观看| 亚洲精品在线a| 亚洲精品乱码视频| 性欧美videos另类喷潮| 91精品国产高清91久久久久久| 中文字幕免费一区| 欧美三级午夜理伦| 精品奇米国产一区二区三区| 欧美r级在线| 国产国语videosex另类| 日韩a级大片| 黄色三级中文字幕| 激情综合色综合久久| 日韩欧美黄色网址| 日韩欧美中文字幕在线播放| 成人毛片在线免费观看| 久久综合免费视频影院| 欧美激情啪啪| 日韩欧美在线一区二区| 久久精品毛片| 国产乱了高清露脸对白| 一区二区三区在线不卡| 国产aⅴ爽av久久久久成人| 这里只有精品丝袜| 亚洲精品555| 亚洲成人精品电影在线观看| 日日夜夜免费精品| 欧美性猛交xxxx乱| 色久综合一二码| 福利在线午夜| 国产精品va在线播放我和闺蜜| 伊人久久大香线蕉综合网站| 免费在线激情视频| 337p粉嫩大胆噜噜噜噜噜91av| 日韩精品成人一区| 亚洲国产精品中文| av影院在线免费观看| 精品免费视频123区| 国产欧美日韩一区二区三区在线| 五月天激情小说| 精品久久久久久久久久久久久久| 欧美 日韩 国产 在线| 久久久久久久一| 亚洲区小说区| 中文字幕无码不卡免费视频| 国产校园另类小说区| 中文字幕有码视频| 久久久精品网站| 青草伊人久久| 日韩国产欧美亚洲| 久久综合久色欧美综合狠狠| 成年人视频免费| 久久精品91久久香蕉加勒比| 亚洲精品观看| 免费国产a级片| 国产日韩欧美制服另类| 在线免费看91| 欧美俄罗斯性视频| 日本欧美三级| 亚洲国产高清av| 一区二区三区 在线观看视频| 亚洲美女福利视频| 欧美一级电影免费在线观看| 清纯唯美综合亚洲| 超碰91在线播放| 精品久久久视频| 午夜视频在线看| 99热99热| 三级久久三级久久| www.5588.com毛片| 亚洲精品黄网在线观看| 精品日韩视频| 少妇一晚三次一区二区三区| 91啪亚洲精品| 国产精品国产一区二区三区四区| 久久久久国产视频| 国产区精品区| 色婷婷狠狠18禁久久| 色综合久久天天| 91麻豆国产福利在线观看宅福利| 精品久久久久久一区二区里番| 日韩电影在线一区二区三区| 少妇影院在线观看| 亚洲免费av网址| 欧美经典影片视频网站| 黄色免费观看视频网站| 亚洲欧洲国产专区| 久色视频在线| 国产精品一级久久久| 蜜桃av一区二区在线观看|