首先我有必要记录下来这段代码,因为我遇到了这个问题, 然后没有解决

后来, 前段说我找到一段代码给我看看, 我并没有在意, 然后她实现了, 她实现了,她真的实现了, 我。。。

为了感谢她,我陪她玩了一中午的五子棋, 并假装输了几把

先说目的:

    递归迭代

再看数据:

  其实有个前提, 就是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形图代码的更多相关文章

  1. python画出心形图

    程序员表达爱的方式真是多种多样.比如,用python来画一个心型,献给梦中的情人,代码如下: from turtle import * pensize(1) pencolor('red') fillc ...

  2. Python实现各种排序算法的代码示例总结

    Python实现各种排序算法的代码示例总结 作者:Donald Knuth 字体:[增加 减小] 类型:转载 时间:2015-12-11我要评论 这篇文章主要介绍了Python实现各种排序算法的代码示 ...

  3. 【转】Python微信好友头像拼接图

    转自:Python微信好友头像拼接图 今天在朋友圈看到有人发了微信好友拼接图,心里满是新奇,看了下评论才知道用Python写的.心里痒痒,立马就安装了下Python. 安装好了之后,看了下大神的代码, ...

  4. python 递归深度优先搜索与广度优先搜索算法模拟实现

    一.递归原理小案例分析 (1)# 概述 递归:即一个函数调用了自身,即实现了递归 凡是循环能做到的事,递归一般都能做到! (2)# 写递归的过程 1.写出临界条件2.找出这一次和上一次关系3.假设当前 ...

  5. python用户评论标签匹配的解决方法

    python用户评论标签匹配的解决方法 这篇文章主要为大家详细介绍了python用户评论标签匹配的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 我们观察用户评论发现:属性词往往和情感词伴 ...

  6. python 递归,深度优先搜索与广度优先搜索算法模拟实现

    一.递归原理小案例分析 (1)# 概述 递归:即一个函数调用了自身,即实现了递归 凡是循环能做到的事,递归一般都能做到! (2)# 写递归的过程 1.写出临界条件 2.找出这一次和上一次关系 3.假设 ...

  7. python抓取性感尤物美女图

    由于是只用标准库,装了python3运行本代码就能下载到多多的美女图... 写出代码前面部分的时候,我意识到自己的函数设计错了,强忍继续把代码写完. 测试发现速度一般,200K左右的下载速度,也没有很 ...

  8. Android图表库MPAndroidChart(三)——双重轴线形图的实现,这次就so easy了

    Android图表库MPAndroidChart(三)--双重轴线形图的实现,这次就so easy了 在学习本课程之前我建议先把我之前的博客看完,这样对整体的流程有一个大致的了解 Android图表库 ...

  9. 用Python递归解决阿拉伯数字转为中文财务数字格式的问题(2)--打开思路的一种方法

    几天前自己写了个将阿拉伯数字转为中文财务数字的程序.用的递归,不幸的是它是树形递归. 虽然实际过程中不太可能出现金额数字大到让Python递归栈溢出,但是始终是一块心病,这玩意终究在理论上是受限制的. ...

随机推荐

  1. 台式机vim配置

    set autoread syntax on "set number " filetype ident on "set autoindent "set expa ...

  2. FFmpeg(1)-创建支持FFmpeg的AS项目

    一.新建Android Studio项目 注意点: 1.在“Create Android Project”栏目时,须勾选“Include C++ support” 复选框: 2.在“Customize ...

  3. 京东轮播图片的静态页面CSS3

    效果图: index.html <!DOCTYPE html> <html> <head> <meta charset="utf-8"&g ...

  4. 每日英语:KFC's Crisis in China Tests Ingenuity of Man Who Built Brand

    Sam Su for years ran one of the highest-flying foreign business operations in China. These days, he' ...

  5. Java 编程下简介 Class 与类加载

    即使有一个类并对它一无所知,但其实它本身就包含了许多信息,Java 在需要使用到某个类时才会将类加载,并在 JVM 中以一个 java.lang.Class 的实例存在.从 Calss 实例开始,可以 ...

  6. 19、UWP 新特性(Creator Update)

    Build 版本 15063+ 1.能够为 CompositionObjects 的其他属性(阴影,裁剪,属性集合)添加动画 2.当设备插上电源的时候,通过 Extended Excution Ses ...

  7. Oracle中TO_DATE TO_CHAR格式

    TO_CHAR 是把日期或数字转换为字符串 TO_DATE 是把字符串转换为数据库中得日期类型转换函数 TO_NUMBER 将字符转化为数字 TO_CHAR 使用TO_CHAR函数处理数字 TO_CH ...

  8. 树型结构递归 实体递归 JSON格式

    用递归实现无限级菜单,产品分类,盖楼式评论.留言等功能. 下列代码不能直接使用 CREATE TABLE [dbo].[P_Category]( [Code] [varchar](36) NOT NU ...

  9. jquery开发的”天才笨笨碰“游戏

    前段时间湖南卫视的快乐大本营里有一款“天才笨笨碰”游戏非常火.这款游戏主要是考选手的声母联想词语的能力. 小篇在看完这个节目后用jquery制作了“天才笨笨碰”网页游戏.先上效果图: 游戏规则: 1. ...

  10. [文件]Linux文本处理常用命令总结

    转自:https://www.cnblogs.com/sheeva/p/6406285.html 引子 作为一个偏爱windows的程序员,以前做文本处理的时候总是喜欢在windows下用notepa ...