博客园-评论树

评论数据的处理

我们可以取到的评论数据形式

comment_list=[

    {"id":1,"content":"111","Pid":None},
    {"id":2,"content":"222","Pid":None},
    {"id":3,"content":"333","Pid":None},
    {"id":4,"content":"444","Pid":1},
    {"id":5,"content":"555","Pid":1},
    {"id":6,"content":"666","Pid":4},
    {"id":7,"content":"777","Pid":3},
    {"id":8,"content":"888","Pid":7},
    {"id":9,"content":"999","Pid":None},

]

首先,给每条数据添加一个children_list(空列表)

for i in comment_list:
    i["children_list"] = []

得到新的列表

comment_list = [
    {‘id‘: 1, ‘content‘: ‘111‘, ‘Pid‘: None, ‘children_list‘: []},
    {‘id‘: 2, ‘content‘: ‘222‘, ‘Pid‘: None, ‘children_list‘: []},
    {‘id‘: 3, ‘content‘: ‘333‘, ‘Pid‘: None, ‘children_list‘: []},
    {‘id‘: 4, ‘content‘: ‘444‘, ‘Pid‘: 1, ‘children_list‘: []},
    {‘id‘: 5, ‘content‘: ‘555‘, ‘Pid‘: 1, ‘children_list‘: []},
    {‘id‘: 6, ‘content‘: ‘666‘, ‘Pid‘: 4, ‘children_list‘: []},
    {‘id‘: 7, ‘content‘: ‘777‘, ‘Pid‘: 3, ‘children_list‘: []},
    {‘id‘: 8, ‘content‘: ‘888‘, ‘Pid‘: 7, ‘children_list‘: []},
    {‘id‘: 9, ‘content‘: ‘999‘, ‘Pid‘: None, ‘children_list‘: []}
]

然后通过变量引用的方法将子评论的内容加到对应的跟评论中

ret = []
for i in comment_list:
    if i["Pid"]:
        for j in comment_list:
            if j["id"] == i["Pid"]:
                j["children_list"].append(i)
    else:
        ret.append(i)

得到了我们需要的结果ret

ret = [
    {‘id‘: 1, ‘content‘: ‘111‘, ‘Pid‘: None, ‘children_list‘: [{‘id‘: 4, ‘content‘: ‘444‘, ‘Pid‘: 1, ‘children_list‘: [{‘id‘: 6, ‘content‘: ‘666‘, ‘Pid‘: 4, ‘children_list‘: []}]}, {‘id‘: 5, ‘content‘: ‘555‘, ‘Pid‘: 1, ‘children_list‘: []}]},
    {‘id‘: 2, ‘content‘: ‘222‘, ‘Pid‘: None, ‘children_list‘: []},
    {‘id‘: 3, ‘content‘: ‘333‘, ‘Pid‘: None, ‘children_list‘: [{‘id‘: 7, ‘content‘: ‘777‘, ‘Pid‘: 3, ‘children_list‘: [{‘id‘: 8, ‘content‘: ‘888‘, ‘Pid‘: 7, ‘children_list‘: []}]}]},
    {‘id‘: 9, ‘content‘: ‘999‘, ‘Pid‘: None, ‘children_list‘: []}
]

# 结论:一旦某个数据引用了一个可变数据类型,这个可变数据类型发生变化,则这个数据也会发生变化

原文地址:https://www.cnblogs.com/QQ279366/p/8488532.html

时间: 2024-10-30 10:16:56

博客园-评论树的相关文章

粗制博客园皮肤 SimoCoding CSS 样式 —— 轻 Flat 风格

1 #nav_next_page { 2 line-height: 40px; 3 } 4 #nav_next_page a { 5 -webkit-border-radius: 3px; 6 -moz-border-radius: 3px; 7 border-radius: 3px; 8 background-color: #515151; 9 height: 40px; 10 line-height: 40px; 11 color: #fff; 12 display: inline-bloc

PHp + socket编程练习——博客园回复

因为也是学习的路上,先画出思路,代码和看别人的学习的,最后是根据的思路完成的,可能比较简单,后期在去完善和更改 <?php /** * php+socket 编程 发送HTTP请求 * @version c.php * 模拟博客园评论 */ interface Proto{ // 连接url public function conn($url); // 发送get请求 public function get(); // 发送post请求 public function post($body);

[Demo]提取个人博客园闪存+评论

还在折腾中,这里是我抓取第一页的结果,发现还是有细节要处理,等完善后再发代码 脚本:Perl OK<img src=" <a href="http://static.cnblogs.com/images/ing_lucky.png"" target="_blank" class="gray">static.cnblogs.com...</a>  class="ing_icon_lucky

利用http协议发布博客园博文评论

本博文承接<php 利用socket发送GET,POST请求>,要利用上文封装好的Http类,考虑如何通过php脚本给博客园的博文提交评论. 原理: 在做这件事前,我们首先要明白,给博文提交评论的实质就是通过http协议服务器发送一个post请求.在发布评论前,我们需要做什么呢?对,是必须要登录的.但登录是另一件事情,我们这里先不讨论.用户登录后,服务器给客户端设置一个cookie.http是无状态的.也就是说客户端向服务器发送请求后,服务器返回响应.一次通信完成.服务器不会记得刚才是谁向自己

Python爬虫入门教程 54-100 博客园等博客网站自动评论器

爬虫背景 爬虫最核心的问题就是解决重复操作,当一件事情可以重复的进行的时候,就可以用爬虫来解决这个问题,今天要实现的一个基本需求是完成"博客园" 博客的自动评论,其实原理是非常简单的,提炼一下需求 基本需求 登录博客园<不实现,登录单独编写博客> 调用评论接口 返回请求结果 确定流程之后,基本就是找突破口的环节了 实际的去评论一下,然后不管你用什么抓包工具都可以,只要抓取到你想要的数据,即可 评论API如下 Request URL: https://www.cnblogs.

论知乎是如何评论博客园与CSDN的!!

发现很多人在用博客园,CSDN博客也有人在用(自己一般也在用). 但是发现博客园的界面简洁大气,而CSDN却是更加商务化,广告也多. 去知乎搜索了一下,意见层次不齐,但各有各的好,看图说话: 来源知乎(若侵权立删) 1. 2. 3. 4.有人说:博客园上边电子书资源好少,CSDN现在又卖得贼贵.且行且珍惜 5.也有人说: 博客园在手机浏览器上的适配体验还不错,反倒app版有点太鸡肋. csdn功能太多,页面太杂了,我只想纯粹的看看博客. 所以我选简书. 6.还有人说: 个人会喜欢CSDN,博客园

用Qt写软件系列六:博客园客户端的设计与实现(用Fiddler抓包,用CURL提交数据,用htmlcxx解析HTML)

引言 博客园是本人每日必逛的一个IT社区.尽管博文以.net技术居多,但是相对于CSDN这种业务杂乱.体系庞大的平台,博客园的纯粹更得我青睐.之前在园子里也见过不少讲解为博客园编写客户端的博文.不过似乎都是移动端的技术为主.这篇博文开始讲讲如何在PC端编写一个博客园客户端程序.一方面是因为本人对于博客园的感情:另一方面也想用Qt写点什么东西出来.毕竟在实践中学习收效更快. 登录过程分析 登录功能是一个客户端程序比不可少的功能.在组装Http数据包发送请求之前,我们得看看整个登录是怎样一个过程.F

【原】博客园第三方客户端-i博客园App开源

[原]博客园第三方客户端-i博客园App开源 本文转载请注明出处 —— polobymulberry-博客园 1.前言 目前i博客园App已经更新到2.0.0版本了,使用了最新的博客园Web API.相比于第一个版本,添加了很多新的功能,也修改了很多功能.整体来说改动比较大,代码也比较混乱.所以趁着清明假期,把代码好好整理了一番.目前基本的架构已成型(当然,后期还需要不断优化),但App基本功能方面还有很多需要添加的,后面会集中把App功能完善. 上面简单介绍了下目前App的情况,回到开源的话题

js 多个checkedBox分组互斥功能实现 由于QQ邮件无法发送暂且将js写在博客园

今天有一项目需要实现多个checkbox分组实现组内互斥功能 . 具体要求如下:大的分类分为A B C 三类, 其中 A   B 中又分为 A1 A2 A3   B1 B2 B3  二级分类,二级分类下又有 A11  A12 A13 A14  A21 A22 A31 A32  B11 B12 B13 B14 ... .要求实现 A B C 互斥 A1 A2 A3 B1 B2 B3 组内互斥.具体结构及代码如下 具体功能树如下: A A1 A11 A12 A13 A2 A21 A22 A3 A31