多级评论算法

comment_list = models.Comment.objects. filter (news_id = new_id)
ret = []   # 最终拿到的数据
comment_list_dict = {}   # 构建的中间字典
for  row  in  comment_list:   # 通过查到的数据中的id作为key,每一行数据作为value生成一个字典
     row.update({ "children" :[]})   # 构建一个键children对应一个空列表
     comment_list_dict[row[ "id" ]] = row   # 将id作为键,当前行作为值存到该字典中
 
for  item  in  comment_list:   # 遍历一遍取到的数据列表
     parrent_row = comment_list_dict.get(item[ "parent_id" ])   # 拿到当前行对应的父亲的地址
     if  not  parrent_row:   # 如果父亲是None,则直接进入ret中
         ret.append(item)
     else :   # 否则,将这行append到父亲的children中
         parrent_row[ "children" ].append(item)   # 重点在这一行,用到了上面提到的第一个知识点
print (ret)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值