精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

日韩影院精彩在线| 91成人精品观看| 91在线播放网址| 热99精品里视频精品| 老牛影视av老牛影视av| 男人亚洲天堂| 亚洲大型综合色站| 亚洲高清不卡一区| 高h放荡受浪受bl| 久久久久久婷| 欧美激情精品久久久久久变态| 久久无码人妻精品一区二区三区| 福利视频一区| 欧美日韩一区二区精品| 欧美性受黑人性爽| 久草在线青青草| 国产成人av福利| 国产精品69av| 天天夜碰日日摸日日澡性色av| 色88888久久久久久影院野外| 69堂免费精品视频在线播放| 久久精品老司机| 97国产suv精品一区二区62| 99久久婷婷国产综合精品 | 亚洲色图欧美色| 婷婷开心激情网| 蜜桃av一区二区在线观看| 欧美黑人xxxⅹ高潮交| 国产成人一区二区在线观看| 国产精品对白| 欧美一区二区久久久| 日本美女高潮视频| 蜜桃视频m3u8在线观看| 亚洲影院免费观看| 99亚洲精品视频| 波多野结衣在线网站| bt7086福利一区国产| 亚洲一区二区三区香蕉| 波多野结衣不卡| 国产精品综合色区在线观看| 欧美高清在线视频观看不卡| 久久中文免费视频| 天天综合精品| 日日狠狠久久偷偷四色综合免费| 日本五十肥熟交尾| 国产美女撒尿一区二区| 日韩亚洲欧美中文三级| 亚洲精品mv在线观看| 123成人网| 欧美日韩美少妇| 少妇一级淫免费放| 成人一区视频| 欧美日韩精品欧美日韩精品| 成人中文字幕av| 成人日韩精品| 欧美在线三级电影| 亚洲高清在线免费观看| 免费在线观看一区| 欧美三级日韩在线| 在线观看免费av网址| 国产精品久久久久77777丨| 欧美天堂一区二区三区| 中文字幕22页| 国产色99精品9i| 日韩精品影音先锋| 少妇熟女视频一区二区三区| 澳门久久精品| 亚洲美女av网站| 国产又黄又粗视频| 欧美成人milf| 欧美老妇交乱视频| 国产乱码久久久久久| 中文欧美日韩| 国产精品www色诱视频| 国产成人精品亚洲| 激情综合色播激情啊| 亚洲自拍偷拍色片视频| 日本黄色免费视频| 国产亚洲欧美中文| 综合一区中文字幕| 在线观看a级片| 婷婷亚洲久悠悠色悠在线播放| 国产中文字幕视频在线观看| 婷婷激情一区| 欧美一区二区三区喷汁尤物| 一边摸一边做爽的视频17国产| 女同一区二区三区| 夜夜嗨av色一区二区不卡| 亚洲一级理论片| 欧美涩涩网站| 国产精品99久久久久久人| 国产又大又黄又爽| 国产在线麻豆精品观看| 久久国产精品久久精品国产| 成人免费在线电影| 亚洲一区二区三区视频在线| 精品人妻一区二区三区四区在线| av成人在线观看| 精品三级av在线| 国产精品免费无码| 欧美国产91| 国产精品福利久久久| 亚洲av无码片一区二区三区| 久久久99精品免费观看不卡| 公共露出暴露狂另类av| 中文在线免费视频| 日韩一区二区三区电影在线观看| 看全色黄大色黄女片18| 欧美超碰在线| 日本a级片电影一区二区| 国产99视频在线| 国产欧美视频一区二区三区| 久久成人福利视频| 欧美天堂一区二区| 亚洲女人被黑人巨大进入| 欧美成人综合色| 美女在线视频一区| 久久av一区二区三区亚洲| 久久精品视频免费看| 91福利在线观看| xfplay5566色资源网站| 综合久久十次| 国产精选久久久久久| 四虎精品成人影院观看地址| 一区二区高清免费观看影视大全 | 天堂中文在线播放| 欧美成人在线直播| √天堂中文官网8在线| 日韩成人伦理电影在线观看| 激情五月综合色婷婷一区二区 | 四季av日韩精品一区| 亚洲婷婷国产精品电影人久久| 久久久精品在线视频| 激情av综合| 欧美激情亚洲一区| 国产xxxx在线观看| 亚洲男同性视频| 制服丝袜中文字幕第一页| 国产在线观看91一区二区三区| 97超视频免费观看| 午夜福利视频一区二区| 亚洲va中文字幕| 特级特黄刘亦菲aaa级| 国产高清欧美| 91九色视频在线| 免费av在线| 欧美精品久久一区二区三区| 日本视频在线免费| 麻豆91在线观看| 亚洲一区二区高清视频| 国产精品亚洲成在人线| 中文字幕一区日韩电影| 中日韩在线观看视频| 国产欧美日韩综合| 色噜噜狠狠一区二区| 日本一区二区三区视频| 国产一区香蕉久久| 大地资源网3页在线观看| 91麻豆精品国产91| 玖玖爱这里只有精品| 粉嫩在线一区二区三区视频| 99在线观看视频免费| 欧美日韩导航| 日韩av免费网站| 天堂中文а√在线| 日韩午夜av一区| 国产极品在线播放| 久久品道一品道久久精品| 四虎永久在线精品无码视频| 欧美呦呦网站| 92看片淫黄大片看国产片| 欧美男男video| 日韩精品视频在线观看免费| 免费黄色片视频| 亚洲天堂av一区| 丰满熟女人妻一区二区三区| 国产欧美在线| 夜夜爽99久久国产综合精品女不卡| 色婷婷成人网| 国精产品一区一区三区有限在线| 欧美高清电影在线| 欧美精品免费视频| 日本少妇全体裸体洗澡| 国产欧美日韩视频在线观看| 日本一区二区三区在线免费观看| 欧美午夜不卡| 日韩欧美亚洲在线| 日韩高清在线观看一区二区| 欧美亚洲一区在线| 免费网站成人| 日韩久久免费视频| 国产乱淫片视频| 欧美性猛交xxxx乱大交| 老熟妻内射精品一区| 91色乱码一区二区三区| 亚洲欧美视频二区| 中国女人久久久| 综合色婷婷一区二区亚洲欧美国产| 久久婷婷国产| 成人a在线观看| 中文在线中文资源| 色综合视频网站| www.亚洲免费| 亚洲精品成人久久| 99热这里只有精品1| 欧美日韩在线第一页| 黄色一级片中国| 国产精品国产三级国产| 在线免费观看污视频| 狠狠色丁香九九婷婷综合五月| 日本免费不卡一区二区| 一本一道久久综合狠狠老| 日本不卡一区二区三区视频| 超碰精品在线| 亚洲伊人成综合成人网| 高清欧美日韩| 日韩av手机在线观看| av有码在线观看| 久久精品成人欧美大片| 高清在线观看av| 日韩久久精品电影| 蜜臀久久99精品久久久| 日韩你懂的在线播放| 一道本在线视频| 欧美在线免费观看亚洲| 欧美日韩综合在线观看| 亚洲va天堂va国产va久| 久久精品www| 亚洲最色的网站| 欧美丰满熟妇bbbbbb| 国产精品久久久久一区| 免费看黄色av| 国产午夜精品一区二区三区嫩草| 玖玖爱在线精品视频| 大陆成人av片| 欧美xxxx日本和非洲| 国产成人一区在线| 97超碰免费在线观看| 狠狠色伊人亚洲综合成人| www欧美激情| 青娱乐精品在线视频| 奇米影音第四色| 麻豆一区二区三| 中文字幕永久有效| 精品一区二区三区的国产在线播放| 男人的天堂最新网址| 久久成人免费日本黄色| www.国产福利| 国产精品91一区二区| 老女人性生活视频| 丁香激情综合国产| 性欧美18—19sex性高清| www.日本不卡| 久久丫精品国产亚洲av不卡| 久久综合九色综合欧美就去吻| 国产肉体xxxx裸体784大胆| xnxx国产精品| av电影在线不卡| 最新热久久免费视频| 在线观看美女av| 亚洲午夜久久久久久久久电影网| 日本在线观看视频网站| 精品成人av一区| 97人妻一区二区精品视频| 欧美日韩亚洲综合一区| 国产裸体无遮挡| 精品美女一区二区| 日韩欧美在线番号| 日韩资源在线观看| 欧洲黄色一区| 日本伊人精品一区二区三区介绍| 成人精品动漫| 99精品国产高清在线观看| 国产一区二区在线视频你懂的| 麻豆久久久9性大片| 成人嫩草影院| 性高湖久久久久久久久aaaaa| 国产视频久久| wwwwwxxxx日本| 成人在线视频首页| 在线观看日本中文字幕| 亚洲欧洲精品一区二区精品久久久| 麻豆chinese极品少妇| 一本色道久久综合精品竹菊| 亚洲一区二区三区高清视频| 精品国产91久久久久久久妲己 | 欧美国产精品v| 国内偷拍精品视频| 色乱码一区二区三区88| 国内老熟妇对白xxxxhd| 亚洲欧美在线第一页| 成人av黄色| 国产suv精品一区二区三区88区| 91嫩草国产线观看亚洲一区二区| 国产精品二区二区三区| 不卡一区2区| 免费看国产一级片| 极品少妇一区二区| 久久国产精品无码一级毛片| 亚洲欧美日韩在线不卡| 99re这里只有精品在线| 日韩美女一区二区三区四区| 岛国在线大片| 668精品在线视频| 国产一区二区在线观| 欧美一区二区影视| 欧美精品九九| xxww在线观看| 久久这里只有精品首页| www.毛片com| 欧美婷婷六月丁香综合色| 午夜影院在线视频| 欧美成人高清视频| 日韩中文视频| 鲁鲁狠狠狠7777一区二区| 欧美天堂亚洲电影院在线观看| 中文字幕 日韩 欧美| 国产日韩欧美一区二区三区综合 | 欧美日韩一区中文字幕| 日本在线丨区| 午夜精品久久久99热福利| 国产一区二区三区国产精品| 亚洲欧洲日夜超级视频| 久久国产直播| 99久久人妻无码中文字幕系列| 一区二区三区精密机械公司| 亚洲天堂狠狠干| 中文字幕日韩有码| 欧美日韩成人影院| 欧美日韩亚洲一区二区三区在线观看| 欧美特黄一区| av电影中文字幕| 一级精品视频在线观看宜春院| 91成人一区二区三区| 神马国产精品影院av| 福利一区和二区| 亚洲欧洲一区二区在线观看| 免费黄网站欧美| 99久久99久久精品免费看小说.| 91久久国产最好的精华液| www.爱爱.com| 久久九九国产精品| 黄网在线观看视频| 精品播放一区二区| 日本高清在线观看视频| 亚洲xxx视频| 亚洲一区欧美| 日韩av电影免费在线观看| 芒果视频成人app| 国产精品一区二区a| 欧美日韩视频一区二区三区| www.日本久久| 亚洲人成亚洲人成在线观看图片| 一级做a爰片久久毛片16| 日韩在线欧美在线| 高清国产一区二区三区四区五区| 伊人久久大香线蕉精品| 紧缚奴在线一区二区三区| 三级全黄做爰视频| 欧美一区二区三区男人的天堂| a级片国产精品自在拍在线播放| 91蜜桃网站免费观看| 欧美日本一区二区高清播放视频| 日韩精品xxx| 天天影视色香欲综合网老头| 色就是色亚洲色图| 国产精品久久久久久久久久久不卡 | 欧美美女视频| 三级一区二区三区| 一区二区三区欧美在线观看| 日批视频在线播放| 国产成人一区二区三区小说| 99久久婷婷国产综合精品电影√| 中文国产在线观看| 午夜视频久久久久久| 国产毛片在线| 91免费观看网站| 一区二区三区国产盗摄| 蜜臀久久99精品久久久久久| 欧美巨大另类极品videosbest | 国产啊啊啊视频在线观看| 久久综合一区二区三区| 毛片一区二区三区| 黄色一级视频免费| 亚洲人成欧美中文字幕| 国产精品白丝久久av网站| 国产精品一区二区免费在线观看| 国产欧美视频在线观看| 亚洲精品久久久久久无码色欲四季 | 又色又爽又高潮免费视频国产| 亚洲欧洲色图综合| 手机看片1024国产| 国产在线观看精品| 欧美日韩一区二区高清| 51妺嘿嘿午夜福利| 精品国产一区二区三区久久影院 | 在线观看日韩电影| 毛片在线导航| 一区二区三区在线视频看| 99久久精品国产毛片|