1. 程式人生 > >django-樹形結構

django-樹形結構

樹形 賦值 list comm ren 菜單 nbsp for 結構

樹形結構:首先是構造一種層級關系,主要用於層級菜單,或是一種遞進的情況.

例:下面是一種層級關系,Pid字段後面的數字,指定的就是id數字的子層級.Pid等於None是根目錄.
comment_list=[ {"id":1,"content":"...","Pid":None,"children_comments":[]}, {"id":2,"content":"...","Pid":None,"children_comments":[]}, {"id":3,"content":"...","Pid":None,"children_comments":[]}, {
"id":4,"content":"...","Pid":1,"children_comments":[]}, {"id":5,"content":"...","Pid":1,"children_comments":[]}, {"id":6,"content":"...","Pid":4,"children_comments":[]}, {"id":7,"content":"...","Pid":3,"children_comments":[]}, {"id":8,"content":"...","Pid":7,"children_comments":[]}, {
"id":9,"content":"...","Pid":None,"children_comments":[]}, ]
首先把他們變成鍵值對,放在字典裏.
comment_dict={}
    
for i in comment_list:
    comment_list[i["id"]]=i   #comment_dict的值就變成 ={1:{"id":1,"content":"...","Pid":None,"children_comments":[]},2:{"id":2,"content":"...","Pid":None,"children_comments":[]}...}

ret=[]
for comment in comment_list:
  pid=comment[‘Pid‘]
  if pid: #當pid字段不為空
    comment_dict[pid][‘children_comments‘].append(comment) #pid值不為空,就是別人的子集,所以添加到相應父級的children_comments下.
  else:
    ret.append(comment)          #把一些不要的數據取出來,

樹形結構,利用的就是可變類型結構.
字典和列表類型,當你賦值給一個變量後,當在別的時候變化,他原來的代碼也會跟著改變.



django-樹形結構