我创建了一个格式如下的类:
class PathStructure(object):
def __init__(self, Description, ID, Parent):
self.Description = Description
self.ID = ID
self.Parent = Parent
self.Children = []
其中Description,ID和Parent是字符串,Children是PathStructure
个对象的列表;因此,我知道所有的亲子关系。我希望能够构造此树的图形表示,因此每个PathStructure
对象都成为一个节点,其中父子关系链接节点。我认为创建节点很容易:
nodes = {}
For item in pathstructure_list:
name = item.Description
nodes[name] = item
我无法想办法将这些节点链接起来,从链接节点中创建树结构。我看过一些例子,但我对使用dicts有点新意,所以我不太了解解决方案 - 特别是因为我将构建一个对象的字典。
修改
为了澄清,我从信息电子表格初始化每个PathStructure对象,然后确定父子关系。例如:
first = PathStructure('Master','1-234-5',None)
second = PathStructure('Sub One','2-345-6',first.ID)
third = PathStructure('Sub Two','3-456-7',first.ID)
fourth = PathStructure('Sub Three','4-597-8',second.ID)
pathstructs = [first, second, third, fourth]
然后我通过一个函数确定每个对象的孩子,所以我知道每个对象的父母和孩子。
答案 0 :(得分:0)
我能够通过以下方式接近我想要的位置:
full = collections.defaultdict(dict)
for item in pathstructs:
name = item.Description
ident = item.ID
perent = item.Parent
final = full[ident]
if parent:
full[parent][ident] = final
else:
root = final
但是这个方法摆脱了PathStructure对象,所以我遇到了一个字符串树而不是对象。