码迷,mamicode.com
首页 > 其他好文 > 详细

父子分类与无限分类

时间:2019-11-22 00:39:44      阅读:78      评论:0      收藏:0      [点我收藏+]

标签:一个   res   eve   效果   als   div   class   无限分类   很多   

一:父子分类

‘‘‘
父子分类效果
1北京 0 2-海淀1 4--sb镇2 -昌平 3 上海 0 -青浦 --徐泾镇 -闵行 ‘‘‘

data_dict = [ {"category_id": 1, "name": "北京", "parent_id": 0}, {"category_id": 2, "name": "上海", "parent_id": 0}, {"category_id": 3, "name": "沙河", "parent_id": 1}, {"category_id": 4, "name": "sb镇", "parent_id": 3}, {"category_id": 5, "name": "昌平", "parent_id": 1}, {"category_id": 6, "name": "青浦", "parent_id": 2}, ] res_list = [] def func(data_list, parent_id=0, level=0, is_clear=True): ‘‘‘ :param data_list: 需要排序的数据 :param parent_id: 自关联的父id 默认0是属于父类 :param level: 显示排序的层级 默认0位第一层级 :return: ‘‘‘ if is_clear: # 防止每次循环每次还有以前残留的数据 res_list.clear() for data in data_list: # 循环打印获取数据 # 首先判断是不是父类 if data[parent_id] == parent_id: # 如果为父类显示层级为第一级 data[level] = level # 将该循环的数据加入上述字典 res_list.append(data) # 循环第二层 .. # 第二层肯定是在上一层 + 1 但是parent_id是无序的 但是其肯定属于某个分类 func(data_list, level=level + 1, parent_id=data[category_id], is_clear=False) return res_list res = func(data_dict) for i in res: print("-" * i[level] + i[name])

二:无限分类

def func1(data_list):
    res_data = []  # 定义一个返回的列表的 所有数据存入该列表
    tree = {}   # 无限分类 类似于一个树为根节点 一个根节点 有很多支点 类似于字典
    for i in data_list:
        tree[i[category_id]] = i   # 给循环的数据加个id 作为标记记录
    for data in data_list:
        # 判断是不是根节点
        if not data[parent_id]:
            # 如果不是根节点 将其加入某个分类节点下
            res_data.append(tree[data[category_id]])
        else:
            # 如果是根节点 判断是否有子节点
            if "children" not in tree[data[parent_id]]:  # 如果没有子节点 添加子节点
                tree[data[parent_id]][children] = []   # 添加个子节点
            tree[data[parent_id]][children].append(tree[data[category_id]])  # 将子节点加入到某个分类下
    return res_data
PS:此类的数据都是参照上述父子分类里的data_dict

 

父子分类与无限分类

标签:一个   res   eve   效果   als   div   class   无限分类   很多   

原文地址:https://www.cnblogs.com/SR-Program/p/11909274.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!