python列表转json树菜单
2024-09-05 19:04:09
1.列表数据
data = [ { 'id': 1, 'parent_id': 2, 'name': "Node1" },
{ 'id': 2, 'parent_id': 5, 'name': "Node2" },
{ 'id': 3, 'parent_id': 0, 'name': "Node3" },
{ 'id': 4, 'parent_id': 5, 'name': "Node4" },
{ 'id': 5, 'parent_id': 0, 'name': "Node5" },
{ 'id': 6, 'parent_id': 3, 'name': "Node6" },
{ 'id': 7, 'parent_id': 3, 'name': "Node7" },
{ 'id': 8, 'parent_id': 0, 'name': "Node8" },
{ 'id': 9, 'parent_id': 1, 'name': "Node9" }
]
2.遍历方法
def list_to_tree(data):
out = {
0: { 'id': 0, 'parent_id': 0, 'name': "Root node", 'sub': [] }
} for p in data:
out.setdefault(p['parent_id'], { 'sub': [] })
out.setdefault(p['id'], { 'sub': [] })
out[p['id']].update(p)
out[p['parent_id']]['sub'].append(out[p['id']]) return out[0]
3.测试
tree = list_to_tree(data)
import pprint
pprint.pprint(tree)
参考地址https://stackoverflow.com/questions/8191683/building-a-menu-tree-from-an-adjacency-list-in-python
最新文章
- quartz 线程问题
- SYMMETRIC MULTIPROCESSORS
- 如何开发H5项目 -- 入门篇
- codeforces 341d (树状数组)
- e+开发中的各种问题
- Gitlab服务器搭建(For fedora23)
- foreach 和for语句比较
- 变脸不变质的桥梁模式(Bridge Pattern)
- StrPos,StrScan,
- 018 关联映射文件中<;class>;标签中的lazy(懒加载)属性
- python基础(7):元祖类型(赋值补充)
- Echarts自动刷新数据
- WPS客户端更新日志留着备用
- HBASE基础知识总结
- [hdu P3085] Nightmare Ⅱ
- 利用pt-table-checksum校验数据一致性
- layoutSubviews 在什么情况下会被触发
- tornado源码分析-多进程
- Image.Save()发生“GDI+ 中发生一般性错误”
- BZOJ1878 [SDOI2009] HH的项链 [莫队,卡常]
热门文章
- Gradle 学习笔记
- SQL 多表查询的几种连接方式
- 关于Java泛型实现原理的思考与一般用法示例总结
- Atcoder arc079 D Decrease (Contestant ver.) (逆推)
- Django项目执行时No Module Named &#39; &#39; 问题的解决情况
- Python编程:从入门到实践—变量和简单数据类型
- yield(放弃、谦逊、礼让) - 瞬时的,暂时放了马上再抢
- memocached基础操作
- C#之委托(一)
- python接口自动化:响应内容中json字符串对象的处理