多级评论
Posted Python
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多级评论相关的知识,希望对你有一定的参考价值。
# 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)
以上是关于多级评论的主要内容,如果未能解决你的问题,请参考以下文章