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

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

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

先说目的:

    递归迭代

再看数据:

  其实有个前提, 就是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. Net AOP(五) 各种IoC框架下实现AOP

    public interface IUserProcessor { void RegUser(User user); } public class UserProcessor : IUserProce ...

  2. 【Unity】8.5 扩展编辑器

    分类:Unity.C#.VS2015 创建日期:2016-04-27 一.简介 可以通过编辑器窗口 (Editor Windows) 创建自己在 Unity 中的自定义设计工具.来自EditorWin ...

  3. python源码安装

    # mkdir /apps/Python- 解压源码包,进入源码包 [root@LB_81 Python-]# ls aclocal.m4 configure.ac install-sh Makefi ...

  4. SQLite - Java

    安装 在 Java 程序中使用 SQLite 之前,我们需要确保机器上已经有 SQLite JDBC Driver 驱动程序和 Java.可以查看 Java 教程了解如何在计算机上安装 Java.现在 ...

  5. 单独的 python 脚本文件使用 django 自带的 model

    django1.9.5&python3.4.4 文件结构 在一个爬虫脚本中将爬取的数据通过django自带的model保存到数据库   修改的文件(其余pycharm新建Django项目生成, ...

  6. Django 查询时间段 时间搜索 过滤

    Django 查询时间段 1.大于某个时间 gt now = datetime.datetime.now()start = now – datetime.timedelta(hours=23, min ...

  7. Python3求笛卡尔积的两种方法

    [本文出自天外归云的博客园] 电影异次元杀阵三部曲中密室线索反复出现笛卡尔积的运用.百度百科: 笛卡尔乘积是指在数学中,两个集合X和Y的笛卡尓积(Cartesian product),又称直积,表示为 ...

  8. python-urllib&urllib2模块

    GET #!/usr/bin/env python # encoding: utf-8 import urllib import urllib2 url = "http://127.0.0. ...

  9. hystrix服务降级和服务熔断的区别

    故事的背景是这样的:由于小强在工作中碰到一些问题,于是想请教一下业界大牛小壮.于是发生了下面的两个场景: 小强在拿起常用手机拨号时发现该手机没有能够拨通,所以就拿出了备用手机拨通了某A的电话,这个过程 ...

  10. Grunt经常使用插件及演示样例说明

    下述给出了经常使用Grunt插件,并列举了部分插件演示样例: 插件名称 说明 Github地址 grunt-contrib-clean 清空文件和目录 https://github.com/grunt ...