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. 记一次ES查询数据突然变为空的问题

    基本环境 elasticsearch版本:6.3.1 客户端环境:kibana 6.3.4.Java8应用程序模块. 其中kibana主要用于数据查询诊断和查阅日志,Java8为主要的客户端,数据插入 ...

  2. Redis 常用知识

    Redis 介绍 Redis 一个开源的使用ANSI C语言编写.遵守BSD协议,内存中的数据结构存储系统,它可以用作Key-Value数据库.缓存和消息中间件,并提供多种语API. 支持多种数据结构 ...

  3. [追热点]Rust学习资源整理

    为什么选择Rust 在一次演讲中,谈到微软为解决相应内存问题所做的工作,微软研究人员 Matthew Parkinson 提到了微软正在开发的基于 Rust 的新编程语言 Verona. 摘自:[Ru ...

  4. 松软科技web教程:JavaScript Switch 语句

    switch 语句用于基于不同条件执行不同动作. JavaScript Switch 语句 请使用 switch 语句来选择多个需被执行的代码块之一. 语法 switch(表达式) { case n: ...

  5. vue如何循环渲染element-ui中table内容

    对于大多数前端开发者来说,vuejs+element-ui是开发后台管理系统过程中必不可少的技术框架.而后台管理系统中,最常见的形式就是表格和表单,以便用来增删改查. element-ui中table ...

  6. ABAP分享五 ALV修改单元格并将修改数据更新到数据表中示例1

    *下面的代码是在alv字段中修改字段的内容,点击保存后就可以保存数据至数据表. TABLES: spfli. DATA: wa_fieldcat TYPE lvc_s_fcat ,  " 相 ...

  7. Viewpager+Fragment 跳转Activity报错android.os.TransactionTooLargeException: data parcel size xxxxx bytes

    Viewpager + Fragment 跳转Activity报错android.os.TransactionTooLargeException: data parcel size xxxxx byt ...

  8. Android8.1 SystemUI源码分析之 Notification流程

    代码流程 1.先看UI显示,StatuBar加载 CollapsedStatusBarFragment 替换 status_bar_container(状态栏通知显示区域) SystemUI\src\ ...

  9. 入职小白随笔之Android四大组件——内容提供器详解(Content Provider)

    Content Provider 内容提供器简介 内容提供器(Content Provider)主要用于在不同的应用程序之间 实现数据共享的功能,它提供了一套完整的机制,允许一个程序访问另一个程序中的 ...

  10. Leaving Google for a couple of devices-Kasper Lund

    原文链接https://medium.com/@kasper.lund/building-for-billions-bcb48814d864 一年多以前,我辞去了我在Google的出色工作,离开了一群 ...