有一个像这样的元组:
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')
)
我想把它改成一个列表,每个列表项都是一本字典。这本词典有一本钥匙子是另一本词典。如何改变元组t,我希望是这样的列表字典树:
^{pr2}$
]
非常感谢
Tags:
如果初始列表的顺序正确,那么可以看看Martijn Pieters解决方案。但是,如果不能保证顺序,则解决方案之一是在初始列表上循环两次:
创建一个单独的字典,将ID映射到本地ID fid title子dictionary。在单独的词典中找到fid后,将本地词典缝合在一起。如果本地字典的fid为-1,则将其添加到列表中。这是因为本地字典是同一个对象,而不管它包含什么。在
这里
entries
跟踪到目前为止创建的所有条目,这样您就可以直接向它们添加子条目,而不必搜索树。在这假设您的列表
t
是按id
正确排序的,并且只有子元素是较低ID的子级。在演示:
^{pr2}$如果“fid after id”假设不成立,您需要添加一个仍要处理的子id队列:
现在,
t
中的条目顺序可以完全随机:fid
可以是任何id
,只要该id在序列t
中的某个地方命名为或者是根条目的-1
。在相关问题 更多 >
编程相关推荐