lines = [(1, 1, '父1节点'), (2, 1, '1-2'), (3, 1, '1-3'), (4, 3, '1-3-4'), (5, 3, '1-3-5'), (6, 3, '1-3-6'),
(7, 7, '父7节点'), (8, 7, '7-8'), (9, 7, '7-9')] # (id, prarentId, name) nodes = {}
data_temp =[]
for line in lines:
id, parentId, name = line
# nodes[]保存需要的字典格式
nodes[id] = {'children': [], 'id': id, "parentId": parentId, "name": name, 'orLeafnode': ''} # orLeafnode 是叶子节点
# data_temp 保存id,parentId
data_temp.append({'id': id, "parentId": parentId})
data = []
for i in data_temp:
id = i['id']
parent_id = i['parentId']
node = nodes[id]
if id == parent_id:
node['orLeafnode'] = ''
data.append(node)
else:
parent = nodes[parent_id]
parent['orLeafnode'] = ''
parent['children'].append(node)
print(data)
输出:
[{
'children': [{
'children': [],
'id': 2,
'parentId': 1,
'name': '1-2',
'orLeafnode': ''
}, {
'children': [{
'children': [],
'id': 4,
'parentId': 3,
'name': '1-3-4',
'orLeafnode': ''
}, {
'children': [],
'id': 5,
'parentId': 3,
'name': '1-3-5',
'orLeafnode': ''
}, {
'children': [],
'id': 6,
'parentId': 3,
'name': '1-3-6',
'orLeafnode': ''
}],
'id': 3,
'parentId': 1,
'name': '1-3',
'orLeafnode': ''
}],
'id': 1,
'parentId': 1,
'name': '父1节点',
'orLeafnode': ''
}, {
'children': [{
'children': [],
'id': 8,
'parentId': 7,
'name': '7-8',
'orLeafnode': ''
}, {
'children': [],
'id': 9,
'parentId': 7,
'name': '7-9',
'orLeafnode': ''
}],
'id': 7,
'parentId': 7,
'name': '父7节点',
'orLeafnode': ''
}]

参考: http://www.cocoachina.com/articles/69831

python 父子节点生成字典的更多相关文章

  1. leetcode之820. 单词的压缩编码 | python极简实现字典树

    题目 给定一个单词列表,我们将这个列表编码成一个索引字符串 S 与一个索引列表 A. 例如,如果这个列表是 ["time", "me", "bell& ...

  2. Devexpress TreeList控件绑定显示父子节点对像

    今天一位同事咨询Devexpress TreeList控件绑定自动显示父子节点对像,但结果是不会显示带父子节点关系,而是将所有的节点作为父节点显示出来了,对像类的代码如下 public class I ...

  3. python调用数据返回字典dict数据的现象2

    python调用数据返回字典dict数据的现象2 思考: 话题1连接:https://www.cnblogs.com/zwgbk/p/10248479.html在打印和添加时候加上内存地址id(),可 ...

  4. Java爬取B站弹幕 —— Python云图Wordcloud生成弹幕词云

    一 . Java爬取B站弹幕 弹幕的存储位置 如何通过B站视频AV号找到弹幕对应的xml文件号 首先爬取视频网页,将对应视频网页源码获得 就可以找到该视频的av号aid=8678034 还有弹幕序号, ...

  5. python基本数据类型之字典

    python基本数据类型之字典 python中的字典是以键(key)值(value)对的形式储存数据,基本形式如下: d = {'Bart': 95, 'Michael': 34, 'Lisa': 5 ...

  6. 6 - Python内置结构 - 字典

    目录 1 字典介绍 2 字典的基本操作 2.1 字典的定义 2.2 字典元素的访问 2.3 字典的增删改 3 字典遍历 3.1 遍历字典的key 3.2 遍历字典的value 3.3 变量字典的键值对 ...

  7. 『Python基础-10』字典

    # 『Python基础-10』字典 目录: 1.字典基本概念 2.字典键(key)的特性 3.字典的创建 4-7.字典的增删改查 8.遍历字典 1. 字典的基本概念 字典一种key - value 的 ...

  8. python实现树莓派生成并识别二维码

    python实现树莓派生成并识别二维码 参考来源:http://blog.csdn.net/Burgess_Liu/article/details/40397803 设备及环境 树莓派2代 官方系统R ...

  9. Python 优雅的操作字典【转】

    Python 中的字典是Python中一个键值映射的数据结构,下面介绍一下如何优雅的操作字典. 1.1 创建字典 Python有两种方法可以创建字典,第一种是使用花括号,另一种是使用内建 函数dict ...

随机推荐

  1. ImportError: cannot import name 'Document'

    一种常见的原因是,程序文件的名字不对. 程序文件的名字不能和 import lib 里的名字冲突. 一个例子: 如果程序文件名字是 docx.py,程序又 from docx import Docum ...

  2. SQL Server AlwaysOn原理简介

    SQL Server2012所支持的AlwaysOn技术集中了故障转移群集.数据库镜像和日志传送三者的优点,但又不相同.故障转移群集的单位是SQL实例,数据库镜像和日志传送的单位是单个用户数据库,而A ...

  3. np.hstack和np.vstack

    np.vstack:按垂直方向(行顺序)堆叠数组构成一个新的数组 In[3]: import numpy as np In[4]: a = np.array([[1,2,3]]) a.shape Ou ...

  4. 代码实现:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字

    import java.util.Scanner; /*题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字. 例如2+22+222+2222+22222(此时共有5个数相加), ...

  5. ArcGISDynamicMapServiceLayer 和 ArcGISTiledMapServiceLayer 区别

    ArcGISDynamicMapServiceLayer(动态地图服务)通常用于实时显示经常变化的数据,支持控制单个图层可见性,可动态投影.但缺点是显示效果较差,整个服务出图较慢:ArcGISTile ...

  6. 常用 tcpdump 抓包方式

    目录 文章目录 目录 tcpdump 指令 关键字 常用指令选项 常规操作示例 过滤主机 过滤端口 过滤网络(网段) 过滤协议 复杂的逻辑表达式过滤条件 参考资料 tcpdump 指令 tcpdump ...

  7. SAS中的聚类分析方法总结

    SAS中的聚类分析方法总结 说起聚类分析,相信很多人并不陌生.这篇原创博客我想简单说一下我所理解的聚类分析,欢迎各位高手不吝赐教和拍砖. 按照正常的思路,我大概会说如下几个问题: 1.     什么是 ...

  8. Web01_HTML

    语法和规范: 1.所有的HTML文件后缀名都是以.html或者.htm结尾的,建议使用.html结尾 2.整个html文件分别由头部分<head></head>和体部分< ...

  9. opencv、numpy中矩阵转置,矩阵内的固定位置相应的坐标变换

    opencv.numpy中矩阵转置,矩阵内的固定位置相应的坐标变换

  10. opencv2中访问像素的简单方法-自定义一个宏CV_MAT_ELEM2

    利用Mat的step[0],step[1]访问像素的行列,自定义一个宏CV_MAT_ELEM2(src,dtype,y,x),src是待访问的Mat,dtype是src的数据类型(int,float, ...