我发现自己需要一些帮助,我试图将字典列表(您会看到)转换为某种树/层次结构。我需要处理的是深度参数列表的当前顺序(这是正确的)。将字典列表转换为层次结构
functions = [
{'depth': 0, 'line': 3, 'type': 'class', 'name': 'General(object)'},
{'depth': 1, 'line': 4, 'type': 'def', 'name': '__init__(self, someargs)'},
{'depth': 2, 'line': 5, 'type': 'def', 'name': 'whenCall(self)'},
{'depth': 1, 'line': 9, 'type': 'def', 'name': 'findthis(self)'},
{'depth': 1, 'line': 12, 'type': 'def', 'name': 'find_multi(self)'},
{'depth': 0, 'line': 15, 'type': 'def', 'name': 'this()'},
{'depth': 0, 'line': 19, 'type': 'def', 'name': 'that(a,b,c)'},
{'depth': 1, 'line': 20, 'type': 'def', 'name': 'private()'}
]
我cosidering得到的结果看起来像以下层次:
functions_hir = [{
'value': {'depth': 0, 'line': 3, 'type': 'class', 'name': 'General(object)'},
'children': [{
'value': {'depth': 1, 'line': 4, 'type': 'def', 'name': '__init__(self, someargs)'},
'children': [{
'value': {'depth': 2, 'line': 5, 'type': 'def', 'name': 'whenCall(self)'},
'children': []
}]
},{
'value': {'depth': 1, 'line': 9, 'type': 'def', 'name': 'findthis(self)'},
'children': []
},{
'value': {'depth': 1, 'line': 12, 'type': 'def', 'name': 'find_multi(self)'},
'children': []
}]
},{
'value': {'depth': 0, 'line': 15, 'type': 'def', 'name': 'this()'},
'children': []
},{
'value': {'depth': 0, 'line': 19, 'type': 'def', 'name': 'that(a,b,c)'},
'children': [{
'value': {'depth': 1, 'line': 20, 'type': 'def', 'name': 'private()'},
'children': []
}]
}]
现在,它的简单对我来说,迭代它/递归。但我从没有运气从我的列表中产生这样的层次结构(我甚至没有接近,我猜)..而且我实际上不知道从哪里开始..希望任何人都能设法帮助我!
看起来像一个真正的昂贵的解决方案。我需要花点时间考虑我是否会接受它。我不太喜欢这种方式。 – JHolta
昂贵的如何?它引入了一个父指针和一个子列表,但没有复制。 –
我明白了。那么,仍然不是我想要的,但我很难理解如何在我的工作中使用这种结构。 – JHolta