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. SpringMVC框架之第四篇

    5.SpringMVC异常处理 5.1.异常分类 1.可预知异常: Java编译时可检测异常,例如:IOException.SQLException等. 自定义异常(继承Exception父类的自定义 ...

  2. socket互传对象以及IO流的顺序问题

    UserInfo.java package com.company.s6; import java.io.Serializable; public class UserInfo implements ...

  3. 第03讲 fragment

    Fragment 官网文档:https://developer.android.google.cn/guide/components/fragments 什么是Fragment 在手机上,Activi ...

  4. Python输出16进制不带0x补零,整数转16进制,字符串转16进制

    Python输出16进制不带0x补零,整数转16进制,字符串转16进制   在开发中,我们偶尔会遇到需要将数据通过控制台打印出来,以检查数据传输的准确性.例如调试服务端刚接到的二进制数据(里面包含很多 ...

  5. go 语言 搭建 图片上传 服务器

    工具: LiteIDE 配置: 代码:list.html <!doctype html> <html> <head> <meta charset=" ...

  6. [洛谷P1279][题解]字串距离

    题目戳我 很明显的这题是一道dp,主要讲一下几个细节 1.初始化 我们需要初始化边界情况也就是一个字符串为空的情况 #----------# #----------# A:aaaaaa A:□□□□□ ...

  7. 大数据基础--R语言(刘鹏《大数据》课后习题答案)

    1.R语言是解释性语言还是编译性语言?   解释性语言 2.简述R语言的基本功能.   R语言是一套完整的数据处理.计算和制图软件系统,主要包括以下功能: (1)数据存储和处理功能,丰富的数据读取与存 ...

  8. 【Java基础】JDBC简明教程

    目录 1. 常用类 2. JDBC编程步骤 3. 事务处理 4. 数据库连接池 5. JDBC列子代码 6. 使用Apache的JDBC工具类 虽然在平时的开发过程中我们不会直接使JDBC的API来操 ...

  9. (五十六)c#Winform自定义控件-瓶子(工业)-HZHControls

    官网 http://www.hzhcontrols.com 前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. GitHub:https://github.com/kww ...

  10. 使用文件流与使用缓冲流完成文件的复制操作性能对比,文件流 FileInputStream FileOutputStream 缓冲流: BufferedInputStream BufferedOutputStream

    package seday06; import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOExc ...