python 1 默写用递归实现无限极分类 2 默写用树实现无限极分类
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 默写用树实现无限极分类的更多相关文章
- python学习:函数的递归调用
计算阶层 普通方法: -使用循环 #!/usr/bin/python def factorial(n): sum = 1 for i in range(1,n+1): ...
- Python之文件处理-递归删除特定文件
Python之文件处理-递归删除特定文件 #!/usr/bin/env python # -*- coding:utf-8 -*- import os def delete_particular_fi ...
- 对于python装饰器结合递归的进一步理解
对于python装饰器结合递归的进一步理解 代码如下: import functools def memoize(fn): print('start memoize') known = dict() ...
- python基础4之递归、lambda、深浅copy
内容概要: 一.递归 二.匿名函数 三.关于python中的深浅拷贝与赋值 一.递归 递归就是函数本身调用自己,直到满足指定条件之后一层层退出函数 递归特性: 必须有一个明确的结束条件 每次进入更深一 ...
- 【Python学习之四】递归与尾递归
看完廖雪峰老师的教程,感觉尾递归函数是一个相对难点.于是复习一下,思考了一下,发表一些见解,记录一下. 1.递归函数 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数 ...
- Python之函数、递归、内置函数
本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数 温故知新 1. 集合 主要作用: 去重 关系测 ...
- 『无为则无心』Python函数 — 32、递归
目录 1.什么叫递归函数 2.递归的应用场景 3.递归的特点 4.应用:3以内数字累加和 5.应用:阶乘 6.总结 1.什么叫递归函数 Python中,在函数内部,可以调用其他函数.如果一个函数在内部 ...
- 【Python文件处理】递归批处理文件夹子目录内所有txt数据
因为有个需求,需要处理文件夹内所有txt文件,将txt里面的数据筛选,重新存储. 虽然手工可以做,但想到了python一直主张的是自动化测试,就想试着写一个自动化处理数据的程序. 一.分析数据格式 需 ...
- python之三层菜单递归
首先非常感谢11期的学长薜保库提供了一种非常实用函数递归方法,让实现三层菜单如此简单,不过对所遍历的嵌套字典或列表格式有所要求.有特定的环境下非常实用. 主要针对中国的各省市区进行展示,采用了百度的j ...
随机推荐
- 初始 Tronado
安装 pip 安装 pip install tronado 手动安装 下载tronado安装包(https://pypi.python.org/packages/source/t/tornado/to ...
- apache storm基本原理及使用总结
什么是Apache Storm Apache Storm是一个分布式实时大数据处理系统.Storm设计用于在容错和水平可扩展方法中处理大量数据.它是一个流数据框架,具有最高的摄取率.虽然Storm是无 ...
- springBoot-eclipse搭建第一个项目
第一步:安装springtools 第二步:新建项目 在eclipse中创建spirngboot项目可能会出现连接超时的问题,这个时候我们可以在https://start.spring.io/创建项目 ...
- Linux中crontab定时任务
crontab安装(centOS) yum -y install vixie-cron crontab语法(计划任务) crontab [-u user] file crontab [-u user] ...
- Mac录制或保存视频后如何放大?
想要在录制和拍摄视频后在喜欢的场景(例如Mark)中放大视频吗?本文将向您展示如何放大视频并通过裁剪视频和“平移和缩放”效果来制作Ken Burns效果.Filmora9是一款功能强大的视频编辑器,具 ...
- MySQL优化/面试,看这一篇就够了
原文链接:http://www.zhenganwen.top/articles/2018/12/25/1565048860202.html 作者:Anwen~链接:https://www.nowcod ...
- Opencv中图像height width X 轴 Y轴 rows cols之间的对应关系
这里做一个备忘录:
- 一个简单的WebServer,socket+threading
一个简单的WebServer import socket import threading body = '<h1> web server </h1>' response_pa ...
- go 语言 搭建 图片上传 服务器
工具: LiteIDE 配置: 代码:list.html <!doctype html> <html> <head> <meta charset=" ...
- BitMap原理
BitMap原理