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

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

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

先说目的:

    递归迭代

再看数据:

  其实有个前提, 就是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. java.lang.SecurityException:Servlet of class org.apache.catalina.servlets.InvokerServlet is privileged

    转自:http://www.cnblogs.com/orientsun/archive/2012/11/04/2753270.html Error: java.lang.SecurityExcepti ...

  2. SSH登录详解

    1.什么是SSH登录 SSH是一种网络协议,用于计算机之间的加密登录. 相比传统的账户密码登录,SSH提供了一种更便捷安全的登录方式. 2.SSH登录流程 登录操作如下 ssh user@host S ...

  3. Using curl to upload POST data with files

    https://stackoverflow.com/questions/12667797/using-curl-to-upload-post-data-with-files ************* ...

  4. 如何在Python之Flask中使用https链接

    [Flask]在Flask中使用HTTPS 转自:http://www.jianshu.com/p/5ea147e03255

  5. ThinkPHP使用Smarty

    ThinkPHP支持多种php模板引擎,可以根据个人需要加以配置. 第一步: 首先去Smarty官网上下载一个Smarty. 第二步: 解压压缩包,会有两个文件夹:demo和libs.打开libs文件 ...

  6. C#学习笔记(19)——使用IComparer(百度文库)

    说明(2017-7-24 19:15:15): 1. 百度文库里的一篇文章,觉得讲的比较好.原文地址:https://wenku.baidu.com/view/b53cd250ad02de80d4d8 ...

  7. 4. K-Means和K-Means++实现

    1. K-Means原理解析 2. K-Means的优化 3. sklearn的K-Means的使用 4. K-Means和K-Means++实现 1. 前言 前面3篇K-Means的博文从原理.优化 ...

  8. Thinkphp动态切换主题

    'DEFAULT_THEME' => '2014', 'TMPL_DETECT_THEME' => true, // 自动侦测模板主题 'THEME_LIST' => '2012,2 ...

  9. # Writing your-first Django-app-part 4-simple-form

    简单的表单 处理表单提交-跳转/错误信息 处理表单提交--结果显示 通用view (generic view) 设计:越少代码越好? 1.修改DemoAppPoll/urls.py 2.修改DemoA ...

  10. Writing your first Django

    Quick install guide 1.1   Install Python, it works with Python2.6, 2.7, 3.2, 3.3. All these version ...