zoukankan      html  css  js  c++  java
  • 评论操作

    评论操作

    在很多地方都能用到:多级评论

    #从数据库中获取的数据格式:
    comment_list = [
        {'id': 1, 'content': 'Python', 'user': '阿松大', 'parent_id': None},
        {'id': 2, 'content': 'Java', 'user': '阿松大', 'parent_id': None},
        {'id': 3, 'content': 'PHP', 'user': '阿松大', 'parent_id': None},
        {'id': 4, 'content': '你hh', 'user': '按文', 'parent_id': 1},
        {'id': 5, 'content': '阿萨德', 'user': '豆腐干', 'parent_id': 1},
        {'id': 6, 'content': '风格和', 'user': '豆腐干', 'parent_id': 4},
        {'id': 7, 'content': '繁华的', 'user': '微软', 'parent_id': 2},
        {'id': 8, 'content': '刀锋', 'user': '微软', 'parent_id': 3},
        {'id': 9, 'content': '我想静静', 'user': '阿松大', 'parent_id': 8},
        {'id': 10, 'content': '我想静静', 'user': '全文', 'parent_id': None},
        {'id': 11, 'content': '我是符符', 'user': 'xiaopang', 'parent_id': 6},
    ]
    
    #要改成这样的格式去使用:
    [
    	{
    	'id': 1,
        'content': 'Python',
        'user': '阿松大',
        'parent_id': None,
        'son':[{
        	'id': 4,
        	'content': '你hh',
            'user': '按文', 
            'parent_id': 1,
            'son':[{
                'id': 6,
                'content': '风格和',
                'user': '豆腐干', 
                'parent_id': 4,
            }]
        },{
        	'id': 5, 
        	'content': '阿萨德', 
        	'user': '豆腐干', 
        	'parent_id': 1
        }]
        },{
        'id': 2,
        'content': 'Java',
        'user': '阿松大', 
        'parent_id': None
        },{
        'id': 3,
        'content': 'PHP',
        'user': '阿松大',
        'parent_id': None
        }
    ]
    
    #期间可使用循环嵌套方法
    ret = []
    for i in comment_list:
    	if not i['parent_id']:
    		#基础评论
             i.append("son")=[]
    		ret.append(i)
    	else:
    		#回复评论
    		for x in ret:
                 if x['id'] == i['parent_id']
    				ret['son'].append(i)
    print(ret)
    
    #如果评论嵌套层级多就使用递归:
    '''
    注:python中字典和列表都是引用类型。引用类型中数组或字典添加自身数组或字典数据时,相同属性的键值会被同时修改,(当出现多元字典时,相同名字的键值在进行修改时会被同时修改成为新的相同的键值)
    '''
    ret = []
    for i in comment_list:
    	if not i['parent_id']:
    		#基础评论
             i.append("son")=[]
    		ret.append(i)
    	else:
    		#回复评论
    		obj = digui(ret,i)
    print(ret)
    def digui(ret,i):
        for r in ret:
            if r['id'] == i['parent_id']:
                ret['son'].append(i)
            else:
                obj = digui(r['son'],i)
    
    #升级版,但是性能不高
    #author:wylkjj
    #date:2019/12/20
    #-*- coding:utf-8 -*-
    comment_list = [
        {'id': 1, 'content': 'Python', 'user': '阿松大', 'parent_id': None},
        {'id': 2, 'content': 'Java', 'user': '阿松大', 'parent_id': None},
        {'id': 3, 'content': 'PHP', 'user': '阿松大', 'parent_id': None},
        {'id': 4, 'content': '你hh', 'user': '按文', 'parent_id': 1},
        {'id': 5, 'content': '阿萨德', 'user': '豆腐干', 'parent_id': 1},
        {'id': 6, 'content': '风格和', 'user': '豆腐干', 'parent_id': 4},
        {'id': 7, 'content': '繁华的', 'user': '微软', 'parent_id': 2},
        {'id': 8, 'content': '刀锋', 'user': '微软', 'parent_id': 3},
        {'id': 9, 'content': '我想静静', 'user': '阿松大', 'parent_id': 8},
        {'id': 10, 'content': '我想静静', 'user': '全文', 'parent_id': None},
        {'id': 11, 'content': '我是符符', 'user': 'xiaopang', 'parent_id': 6},
    ]
    ret = []
    for i in comment_list:
        i.update({'son':[]})
    for r in comment_list:
        comment_line_parent_id = r['parent_id']
        if not comment_line_parent_id:
            ret.append(r)
        else:
            for t in comment_list:
                if comment_line_parent_id == t['id']:
                    t['son'].append(r)
    print(ret)
    print(comment_list)#此列表也被修改了
    
    #最强版:高效率--哈希
    '''
    字典
    dict={'asd':[,'asd']}
    dict.get('asd')取到值
    '''
    ret = []
    comment_dict = {}
    for line in comment_list:
        line.update({'son':[]}) #给数据加键值
        comment_dict[line['id']] = line #添加到字典中
    for r in comment_list:
        comment_line = r
        comment_line_parent_id = comment_line['parent_id']
        if not comment_line_parent_id:
            ret.append(r)
        else:
            comment_dict[comment_line_parent_id]['son'].append(r)
    print(ret)
    
  • 相关阅读:
    Mysql设置字段唯一,值唯一方式
    在tomcat中模块化部署项目
    优化Eclipse
    akka 服务的搭建
    ES6中的let和var区别
    jquery,$,选择器,正则表达式
    jsp页面用java代码取随机数
    为什么要做权限管理
    将字符串编码成数值,求数值最大和问题
    Cookie与Session的区别
  • 原文地址:https://www.cnblogs.com/wylshkjj/p/12128799.html
Copyright © 2011-2022 走看看