多級評論
阿新 • • 發佈:2017-09-10
再次 bsp 無需 ash div default 需要 想要 數據
# data=[ # [11,22,33], # [44,55,66] # ] # data[0].append(data[1]) # print(data) # data[1].append(77) # # 由於[11, 22, 33, [44, 55, 66, 77]]和[[11, 22, 33, [44, 55, 66, 77]], [44, 55, 66, 77]] # # 引用的是同一塊內存地址,所以誰添加了內容對應的也跟隨添加 # data=[ # {‘k1‘:‘v1‘}, # {‘k2‘:‘v2‘} # ] # # for item in data:# item[‘kk‘]=‘vv‘ # # # # python裏面列表和字典引用的是引用類型,當我們拿到地址被操作了,會發生級聯變化;如果想要再獨立一份就需要copy() # # 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}, # ] # # v=[row.setdefault(‘child‘) for row in msg_list] # # # # #註意列表生成公式裏面 不能出現=等賦值操作,可以使用方法 # # print(msg_list) # # #方式2 # # msg_list_dict={} # # msg_list_dict={# # 1, {‘id‘:1,‘content‘:‘xxx‘,‘parent_id‘:None}, # # 2, {‘id‘:2,‘content‘:‘xxx‘,‘parent_id‘:None}, # # } # #字典的在存儲的時候,鍵會轉換成一個hashs值,這個hash值和內存地址相關,# 無論字典裏的鍵值對有多大,都可以一次的尋找到key對應的value # #字典查詢就是數據庫裏的hansh 索引,直接拿到key就可以快得驚人的獲取到value # #無需向列表那樣 查詢 是 一個個順序 遍歷 # # #所以定義一個字典 方便我們查找 評論信息,而且因為Python是數據引用類型,相同數據引用一塊內存,也不會占用內存 # for item in msg_list: # item[‘child‘]=[] # msg_list[item[‘id‘]]=item # # #程序運行到此處,會有兩個msg_list msg_list_dict # ret=[] # for item in msg_list: # pid=item[‘parent_id‘] # if pid: # msg_list[pid][‘child‘].apend(item) # else: # ret.append(item) 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}, ] msg_dict={} #1、給所以 評論設置一個 child鍵=[空列表的值] [row.setdefault(‘child‘,[]) for row in msg_list] 列表生成器方法 #3、定義一個查詢用的字典 for item in msg_list: item[‘child‘]=[] msg_dict[item[‘id‘]]=item #2、把帶有‘parent_id‘的鍵的字典,添加到對應的父字典裏(你會想到再次遍歷msg_list,但是多層循環效率低下,於是重新定義一個字典) for item in msg_list: pid=item[‘parent_id‘] if pid: msg_dict[pid][‘child‘].append(item) # 4、找出根評論· root_coment=[] for item in msg_list: if not item[‘parent_id‘]: root_coment.append(item) for item in root_coment: print(item)
多級評論