python 数据结构转换,将线性元祖转换成字典树

有个 数据表

  
id   fid        title
1 -1 python
2 -1 ruby
3 -1 php
4 -1 lisp
5 1 flask
6 1 django
7 1 webpy
8 2 rails
9 3 zend
10 6 dblog

这是一个栏目表,title 是栏目名称, id 是栏目 id, fid 是栏目的父id.构建一个多级栏目分类

通过 python 查询处理,会得到下面的一个元祖,

  
t = (
(1, -1, 'python'),
(2, -1, 'ruby'),
(3, -1, 'php'),
(4, -1, 'lisp'),
(5, 1, 'flask'),
(6, 1, 'django'),
(7, 1, 'webpy'),
(8, 2, 'rails'),
(9, 3, 'zend'),
(10, 6, 'dblog')
)

希望通过 python 处理 转换成下面的 list 字典树

  
l = [
{
'id': 1,
'fid': -1,
'title': 'python',
'son': [
{
'id': 5,
'fid': 1,
'title': 'flask',
},
{
'id': 6,
'fid': 1,
'title': 'django',
'son': [
{
'id': 10,
'fid': 6,
'title': 'dblog',
},
]
},
{
'id': 7,
'fid': 1,
'title': 'webpy',
},
]
},
{
'id': 2,
'fid': -1,
'title': 'ruby',
'son': [
{
'id': 8,
'fid': 2,
'title': 'rails',
},
]
},
{
'id': 3,
'fid': -1,
'title': 'php',
'son': [
{
'id': 9,
'fid': 3,
'title': 'zend',
},
]
},
{
'id': 4,
'fid': -1,
'title': 'lisp',
}
]

自己写了好几个,感觉效率不够好, 求大神更 pythonic 的方法

评论 (0)链接2014-02-21 
德问是一个专业的编程问答社区,请 登录注册 后再提交答案