data=[
{"cat_id":3,"name":"沙河","parent_id":1},
{"cat_id":4,"name":"sb镇","parent_id":3},
{"cat_id": 1, "name": "北京", "parent_id": 0},
{"cat_id":5,"name":"昌平","parent_id":1},
{"cat_id":6,"name":"青浦","parent_id":2},
{"cat_id": 2, "name": "上海", "parent_id": 0},
] def get_tree(data):
lists=[]
tree={}
for item in data:
tree[item['cat_id']]=item
for i in data:
if not i['parent_id']:
lists.append(tree[i['cat_id']])
else:
parent_id=i['parent_id']
if "children" not in tree[parent_id]:
tree[parent_id]["children"]=[]
tree[parent_id]['children'].append(tree[i['cat_id']]) return lists # print(get_tree(data)) # data1=[
# {"cat_id":1,"name":"北京","parent_id":0,
# "childen":[
# {"cat_id":3,"name":"沙河","parent_id":1,"childen":[{"cat_id":4,"name":"sb镇","parent_id":3},]},
# {"cat_id":5,"name":"昌平","parent_id":1},]},
# {"cat_id":2,"name":"上海","parent_id":0,
# "childen":[{"cat_id":6,"name":"青浦","parent_id":2},]},
# ] # 北京
# -沙河
# --sb镇
# -昌平
# 上海
# -青浦
lis = []
def get_son1(data,parent_id=0,level=0,is_clear=True):
if is_clear:
lis.clear()
for item in data:
if item['parent_id']==parent_id:
item['level']=level
lis.append(item)
get_son1(data,parent_id=item["cat_id"],level=level+1,is_clear=False)
return lis # re_data=get_son1(data)
# for item in re_data:
# print("-"*item['level']+item['name'])
res_id=[]
def get_son_id_list(data,parent_id,is_clear=True):
if is_clear:
res_id.clear()
#如果parent_id不等与0,就把自己加进去
if parent_id:
res_id.append(parent_id)
for item in data:
#如果改分类的父级id为传过的parent_id,就把它的cat_id,存到res_id,接着找它自己有没有儿子,进行递归
if item['parent_id']==parent_id:
res_id.append(item['cat_id'])
get_son_id_list(data,parent_id=item["cat_id"],is_clear=False)
return res_id def get_son(data):
lis=[]
for i in data:
if not i['parent_id']:
i['level']=0
lis.append(i)
return lis

python 1 默写用递归实现无限极分类 2 默写用树实现无限极分类的更多相关文章

  1. python学习:函数的递归调用

    计算阶层   普通方法: -使用循环   #!/usr/bin/python   def factorial(n):     sum = 1     for i in range(1,n+1):   ...

  2. Python之文件处理-递归删除特定文件

    Python之文件处理-递归删除特定文件 #!/usr/bin/env python # -*- coding:utf-8 -*- import os def delete_particular_fi ...

  3. 对于python装饰器结合递归的进一步理解

    对于python装饰器结合递归的进一步理解 代码如下: import functools def memoize(fn): print('start memoize') known = dict() ...

  4. python基础4之递归、lambda、深浅copy

    内容概要: 一.递归 二.匿名函数 三.关于python中的深浅拷贝与赋值 一.递归 递归就是函数本身调用自己,直到满足指定条件之后一层层退出函数 递归特性: 必须有一个明确的结束条件 每次进入更深一 ...

  5. 【Python学习之四】递归与尾递归

    看完廖雪峰老师的教程,感觉尾递归函数是一个相对难点.于是复习一下,思考了一下,发表一些见解,记录一下. 1.递归函数 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数 ...

  6. Python之函数、递归、内置函数

    本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数 温故知新 1. 集合 主要作用: 去重 关系测 ...

  7. 『无为则无心』Python函数 — 32、递归

    目录 1.什么叫递归函数 2.递归的应用场景 3.递归的特点 4.应用:3以内数字累加和 5.应用:阶乘 6.总结 1.什么叫递归函数 Python中,在函数内部,可以调用其他函数.如果一个函数在内部 ...

  8. 【Python文件处理】递归批处理文件夹子目录内所有txt数据

    因为有个需求,需要处理文件夹内所有txt文件,将txt里面的数据筛选,重新存储. 虽然手工可以做,但想到了python一直主张的是自动化测试,就想试着写一个自动化处理数据的程序. 一.分析数据格式 需 ...

  9. python之三层菜单递归

    首先非常感谢11期的学长薜保库提供了一种非常实用函数递归方法,让实现三层菜单如此简单,不过对所遍历的嵌套字典或列表格式有所要求.有特定的环境下非常实用. 主要针对中国的各省市区进行展示,采用了百度的j ...

随机推荐

  1. WPF数据可视化-趋势图

    环境: 系统: Window 7以上: 工具:VS2013及以上. 研发语言及工程: C# WPF 应用程序 效果: ​ ​ 简介: 不需要调用第三方Dll, 仅仅在WPF中使用贝塞尔曲线,不到500 ...

  2. C# -- 多线程向同一文件写入

    1. 多线程向同一文件写入Log. public delegate void AsyncLog(string str1, string str2); private void Test() { Con ...

  3. VueUI -- iView4.0简单使用

    一.iView(View UI) 1.简介 官网:https://www.iviewui.com/ 仓库:https://github.com/view-design/ViewUI iView 与 V ...

  4. Httpclient 4.5.2 请求重试机制

    重点是HttpRequestRetryHandler.retryRequest()方法 public static String callHttpServer(String contentType,S ...

  5. MySQL 学习笔记 (一)

    1.InnoDB and Online DDL ALTER TABLE tbl_name ADD PRIMARY KEY (column), ALGORITHM=INPLACE, LOCK=NONE; ...

  6. python 基础学习笔记(6)--函数(1)

    ## **函数(1)** **函数的定义:** 1. [ ] 小时候大家应该都玩过乐高积木,只要通过想象和创意,可以用它怕拼凑出很多神奇的东西.随着学习的深入,编写的代码日益增加并且越来越复杂,所以需 ...

  7. GNN 相关资料记录;GCN 与 graph embedding 相关调研

    最近做了一些和gnn相关的工作,经常听到GCN 和 embedding 相关技术,感觉很是困惑,所以写下此博客,对相关知识进行索引和记录: 参考链接: https://www.toutiao.com/ ...

  8. 10. 函数-lambda函数及高阶函数

    一.匿名函数解析 ​ 关键字lambda表示匿名函数,冒号前面的n表示函数参数,可以有多个参数.匿名函数有个限制,就是只能有一个表达式,不用写return,返回值就是该表达式的结果. ​ 用匿名函数有 ...

  9. JS去重的几种常见方法

    JS数组去重的几种常见方法 一.简单的去重方法 // 最简单数组去重法 /* * 新建一新数组,遍历传入数组,值不在新数组就push进该新数组中 * IE8以下不支持数组的indexOf方法 * */ ...

  10. [译]Vulkan教程(27)Image

    [译]Vulkan教程(27)Image Images Introduction 入门 The geometry has been colored using per-vertex colors so ...