父子分類與無限分類

2022-02-17 03:11:22 字數 1884 閱讀 4463

'''

父子分類效果

1北京 0

2-海淀1

4--sb鎮2

-昌平3 上海 0

-青浦--徐涇鎮

-閔行'''

data_dict =[,,

,,,,

]res_list =

def func(data_list, parent_id=0, level=0, is_clear=true):

''':param data_list: 需要排序的資料

:param parent_id: 自關聯的父id 預設0是屬於父類

:param level: 顯示排序的層級 預設0位第一層級

:return:

'''if is_clear: #

防止每次迴圈每次還有以前殘留的資料

res_list.clear()

for data in data_list: #

迴圈列印獲取資料

#首先判斷是不是父類

if data['

parent_id

'] ==parent_id:

#如果為父類顯示層級為第一級

data['

level

'] =level

#將該迴圈的資料加入上述字典

#迴圈第二層 ..

#第二層肯定是在上一層 + 1 但是parent_id是無序的 但是其肯定屬於某個分類

func(data_list, level=level + 1, parent_id=data['

category_id

'], is_clear=false)

return

res_list

res =func(data_dict)

for i in

res:

print("

-" * i['

level

'] + i['

name

'])

def

func1(data_list):

res_data = #

定義乙個返回的列表的 所有資料存入該列表

tree = {} #

無限分類 類似於乙個樹為根節點 乙個根節點 有很多支點 類似於字典

for i in

data_list:

tree[i[

'category_id

']] = i #

給迴圈的資料加個id 作為標記記錄

for data in

data_list:

#判斷是不是根節點

ifnot data['

parent_id']:

#如果不是根節點 將其加入某個分類節點下

category_id

']])

else

:

#如果是根節點 判斷是否有子節點if"

children

"not

in tree[data['

parent_id

']]: #

如果沒有子節點 新增子節點

tree[data['

parent_id

']]['

children

'] = #

新增個子節點

tree[data['

parent_id

']]['

children

category_id

']]) #

將子節點加入到某個分類下

return res_data

ps:此類的資料都是參照上述父子分類裡的data_dict

無限級分類

相信在實際專案中很多人在做專案的時候都會用到無限級分類,無限級分類說白了就是乙個遞迴,遞迴在我們的專案開發中起到很重要的作用,如 麵包屑導航等。下面我們演示乙個遞迴的案例 area array array id 1,name 安徽 parent 0 array id 2,name 海淀 parent...

PHP無限分類

定義乙個陣列 或者從資料庫裡取出 data array array id 1,pid 0,cname 數碼 array id 2,pid 0,cname 家用電器 array id 3,pid 0,cname 電腦 array id 4,pid 0,cname 服裝 array id 5,pid 0...

無限分類小記

無限分類的概念 無限分類就是乙個分類下面可以建立多個子類,而其子類下面亦可建立不同子類,如此往復,沒有終點 遞迴無限分類原理 每乙個分類都需要記錄他的父級id,當為頂級分類時,父級id為0。這樣無論那個分類,都可以通過父級id一層層的去查明他所有的父級,一遍清楚地知道他所屬何種分類,層級深度為幾。r...