Django多級評論
阿新 • • 發佈:2017-07-18
new {} highlight child 發現 有變 數據 基礎 end
一、原理
#多級評論原理簡單原理,弄完之後發現基礎白學了 msg_list = [ {‘id‘:1,‘content‘:‘xxx‘,‘parent_id‘:None}, {‘id‘:2,‘content‘:‘xxx‘,‘parent_id‘:None}, {‘id‘:3,‘content‘:‘xxx‘,‘parent_id‘:None}, {‘id‘:4,‘content‘:‘xxx‘,‘parent_id‘:1}, {‘id‘:5,‘content‘:‘xxx‘,‘parent_id‘:4}, {‘id‘:6,‘content‘:‘xxx‘,‘parent_id‘:2}, {‘id‘:7,‘content‘:‘xxx‘,‘parent_id‘:5}, {‘id‘:8,‘content‘:‘xxx‘,‘parent_id‘:3}, ] #python裏面的apend之類的東西都是引用的原來數據的內從地址,對原數據進行操作的話 #我們引用的數據也會發生一樣的變化(字典列表之類的) #騙子的方法 # for i in msg_list: # i[‘child‘]=[] # for i in range(len(msg_list)-1,-1,-1): # if msg_list[i][‘parent_id‘]: # msg_list[msg_list[i][‘parent_id‘] - 1][‘child‘].append(msg_list[i]) # new_msg_list = [i for i in msg_list if i[‘parent_id‘] is None] # print(new_msg_list) #老師講的方法 # v=[row.setdefault(‘child‘,[]) for row in msg_list] #這和地下的第一個for循環的作用是一樣的,給每一個元素加一個‘child‘:[] # print(msg_list) #如果我們想加快索引(快點找到數據的話)就建一個字典的數據結構 msg_list_dict={} #加快索引,節省時間 for item in msg_list: item[‘child‘]=[] msg_list_dict[item[‘id‘]]=item #字典中key為item[‘id‘],value為item #把字典數據結構填上數據,能夠加快索引,而且我們數據還是占得原來的內從空間 #我們只是引用了數據的內容空間,所以不存在新的數據結構浪費空間一說 result=[] for item in msg_list: pid=item[‘parent_id‘] if pid: #如果parent_id不為空,說明它是子級,要把自己加入對應的父級 msg_list_dict[pid][‘child‘].append(item) else: #如果為空,說明他是父級,要把它單獨領出來用 result.append(item) #result就是我們最終要的結果,因為這裏面全是引用,所有數據的內存地址都沒有變 #只不過被多個數據結構引用了而已 print(result)
Django多級評論