python递归评论tree形图代码
首先我有必要记录下来这段代码,因为我遇到了这个问题, 然后没有解决
后来, 前段说我找到一段代码给我看看, 我并没有在意, 然后她实现了, 她实现了,她真的实现了, 我。。。
为了感谢她,我陪她玩了一中午的五子棋, 并假装输了几把
先说目的:
递归迭代
再看数据:
其实有个前提, 就是aid不能重复
fid是父级id, 指向的aid
如果 aid == fid , 证明fid的那个aid是子集
如果 fid == 0 就证明是顶级

代码:
def aaa(oldArr, fid):
newArr = []
for i in oldArr:
if i["fid"] == fid:
obj = {"aid": i["aid"], "description": i["description"]}
child = aaa(oldArr, i["aid"])
if len(child) > :
obj["child"] = child
newArr.append(obj)
return newArr
if __name__ == '__main__':
li = [
{"aid": , "fid": , "description": "职业价值观4", "vid": , "variableName": "标准系数"},
{"aid": , "fid": , "description": "职业价值观1", "vid": },
{"aid": , "fid": , "description": "职业价值观2", "vid": },
{"aid": , "fid": , "description": "职业价值观3", "vid": },
{"aid": , "fid": , "description": "教育", "vid": },
{"aid": , "fid": , "description": "时间", "vid": },
]
res = {"dirname": "", "child_dirs": [], "files": []}
print(aaa(li, ))
需求2, 进行树形tree格式前传参格式调整
需求:

代码:
#!/usr/bin/python
# -*- coding:utf-8 -*- import os.path
import json
from pprint import pprint a = [
'/a/1/1.png',
'/b/2/2.png',
'/a/1/3.png',
'/a/5.png',
'/7.png',
'/a/3/4.png'
] def walk(parent, r, endchild=True):
parent, child = os.path.split(parent)
if not child == '':
r = walk(parent, r, endchild=False)
print '获取到上一级的节点dict,增加当前节点的信息[%s]' % r
if endchild:
print '这里是叶子节点了,添加文件信息'
r['files'].append(child)
return r
else:
try:
result = [x for x in r['childs'] if x['name'] == './'+child][0]
except:
print '这里是中间节点,增加中间节点信息[%s, %s]' % (parent, child)
r['childs'].append({
"name": './' + child,
"files": [],
"childs": []
})
result = [x for x in r['childs'] if x['name'] == './'+child][0]
print '返回新增的节点作为下一个递归回退的当前节点[%s]' % result
return result
else:
return r if __name__ == '__main__':
r = {
"name": '/',
"files": [],
"childs": []
}
for i in a:
walk(i, r)
print json.dumps(r)
结果:
记得拿for最后一个
{
"childs": [{
"childs": [{
"childs": [],
"name": "./1",
"files": ["1.png", "3.png"]
}, {
"childs": [],
"name": "./3",
"files": ["4.png"]
}],
"name": "./a",
"files": ["5.png"]
},
{
"childs": [{
"childs": [],
"name": "./2",
"files": ["2.png"]
}],
"name": "./b",
"files": []
}
],
"name": "/",
"files": ["7.png"]
}
python递归评论tree形图代码的更多相关文章
- python画出心形图
程序员表达爱的方式真是多种多样.比如,用python来画一个心型,献给梦中的情人,代码如下: from turtle import * pensize(1) pencolor('red') fillc ...
- Python实现各种排序算法的代码示例总结
Python实现各种排序算法的代码示例总结 作者:Donald Knuth 字体:[增加 减小] 类型:转载 时间:2015-12-11我要评论 这篇文章主要介绍了Python实现各种排序算法的代码示 ...
- 【转】Python微信好友头像拼接图
转自:Python微信好友头像拼接图 今天在朋友圈看到有人发了微信好友拼接图,心里满是新奇,看了下评论才知道用Python写的.心里痒痒,立马就安装了下Python. 安装好了之后,看了下大神的代码, ...
- python 递归深度优先搜索与广度优先搜索算法模拟实现
一.递归原理小案例分析 (1)# 概述 递归:即一个函数调用了自身,即实现了递归 凡是循环能做到的事,递归一般都能做到! (2)# 写递归的过程 1.写出临界条件2.找出这一次和上一次关系3.假设当前 ...
- python用户评论标签匹配的解决方法
python用户评论标签匹配的解决方法 这篇文章主要为大家详细介绍了python用户评论标签匹配的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 我们观察用户评论发现:属性词往往和情感词伴 ...
- python 递归,深度优先搜索与广度优先搜索算法模拟实现
一.递归原理小案例分析 (1)# 概述 递归:即一个函数调用了自身,即实现了递归 凡是循环能做到的事,递归一般都能做到! (2)# 写递归的过程 1.写出临界条件 2.找出这一次和上一次关系 3.假设 ...
- python抓取性感尤物美女图
由于是只用标准库,装了python3运行本代码就能下载到多多的美女图... 写出代码前面部分的时候,我意识到自己的函数设计错了,强忍继续把代码写完. 测试发现速度一般,200K左右的下载速度,也没有很 ...
- Android图表库MPAndroidChart(三)——双重轴线形图的实现,这次就so easy了
Android图表库MPAndroidChart(三)--双重轴线形图的实现,这次就so easy了 在学习本课程之前我建议先把我之前的博客看完,这样对整体的流程有一个大致的了解 Android图表库 ...
- 用Python递归解决阿拉伯数字转为中文财务数字格式的问题(2)--打开思路的一种方法
几天前自己写了个将阿拉伯数字转为中文财务数字的程序.用的递归,不幸的是它是树形递归. 虽然实际过程中不太可能出现金额数字大到让Python递归栈溢出,但是始终是一块心病,这玩意终究在理论上是受限制的. ...
随机推荐
- Chrome多线程下载
https://github.com/jae-jae/camtd https://aria2.github.io/ 切换到解压目录D:\Tools\aria2-1.34.0-win-64bit中,打开 ...
- C++11 POD类型
POD,全称plain old data,plain代表它是一个普通类型,old代表它可以与c兼容,可以使用比如memcpy()这类c中最原始函数进行操作.C++11中把POD分为了两个基本概念的集合 ...
- 【嵌入式】bootloader,linux,filesystem的烧写
平台: 深圳市优龙科技有限公司的FS2410(基于ARM9) 准备: 1.用串口(UART1,J8)线与PC机相连,这个是用来传输数据和显示信息的 2.连接USB数据下载线(usb device),注 ...
- sql语句插入百万测试数据
开发的过程中,很多时候我们需要插入百万数据来测试功能和性能,今天我来教大家最简单的插入方法 -----------------1.新建表--------------------- CREATE TAB ...
- make -C M=
http://blog.sina.com.cn/s/blog_89fa41ef0100trjr.html Makefile:PWD = $(shell pwd)KERNEL_SRC = /usr/sr ...
- Win10+VMplayer12中U盘无法挂载解决
VMplayer 中运行mac osx,想挂载个U盘进去,无奈居然一直挂载不进去,而此时宿主机Win10中的U盘也消失,查看设备管理器居然显示"未知设备" 于是乎一顿度娘,网上的方 ...
- [转载]为何 Emacs 和 Vim 被称为两大神器
Emacs 是神的编辑器,而 Vim 是编辑器之神.二者为何会有如此美誉,且听本文向你一一道来. 目 录 0. 序章:神器的传说 1. 无敌的可扩展性 1.1 可扩展性给了软件强大的生命 1.2 Em ...
- Spring Batch事务处理
事务模型描述 1.step之间事务独立 2.step划分成多个chunk执行,chunk事务彼此独立,互不影响:chunk开始开启一个事务,正常结束提交.chunk表示给定数量的item的操作集合,主 ...
- php数组转xml
0x00 需求 最近要做百度.360.神马搜索的网站sitemap,三家的格式都是xml,然而具体的细节还有有差别的. 一开始用的是dom,没有使用sax,写了几段便觉得太傻了,想到有没有数组转xml ...
- mysql 乱码解决方案
如何解决MYSQL数据中文乱码问题? 第一种方法,总结: 经常更换虚拟主机,而各个服务商的MYSQL版本不同,当导入数据后,总会出现乱码等无法正常显示的问题,查了好多资料,总结出自己的一点技巧: WI ...