使用Python构建一个包含对象列表的树

时间:2016-07-12 15:44:20

标签: python object tree

我创建了一个格式如下的类:

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]

然后我通过一个函数确定每个对象的孩子,所以我知道每个对象的父母和孩子。

1 个答案:

答案 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对象,所以我遇到了一个字符串树而不是对象。