【发布时间】:2017-07-24 02:56:12
【问题描述】:
我在 Python 3 中创建树层次结构时遇到问题。我希望能够在不使用类的情况下做到这一点。
我需要开始的数据不按顺序和格式['ID','Parent']:
data=[['E1', 'C1'],['C1', 'P1'],['P1', 'R1'],['E2', 'C2'],['C2', 'P2'],['P2', 'R1'],['C3', 'P2'],['E3', 'C4'],['C4', 'P3'],
['P3', 'R2'],['C5', 'P3'],['E4', 'C6'],['C6', 'P4'], ['P4', 'R2'],['E5', 'C7'],['C7', 'P5'],['P5', 'R3'],['E6', 'C9'],['C9', 'P6'],['P6', 'R3'],
['C8', 'P6'],['E7', 'C10'],['C10', 'P7'],['P7', 'R4'],['C11', 'P7'],['E8', 'C12'],['C12', 'P8'],['P8', 'R4']]
我想在不使用类的情况下创建(树)字典变量,最终得到如下结果:
Tree={'R1':{'P1':{},'P2':{}},'R2':{}} etc
或
Tree={'R1':[{'P1':[],'P2':[]}],'R2':[]} etc
显然 R1 和 R2 有更多的孩子,但也许这就是 Tree 结构的样子?
【问题讨论】:
-
是否知道数据中元素出现的顺序?
-
你知道你不能对dict中的不同元素使用相同的键,对吧? ;)
-
Python 字典必须有唯一的键。如果您尝试定义
{'ID': 1, 'ID': 2}之类的内容,您最终会得到{'ID': 2},因为第二个'ID'将覆盖第一个。 -
不确定你有什么反对类,因为这就是
dict是什么——创建一个dict子类相当容易,这将使你想做的事情变得非常容易。见What is the best way to implement nested dictionaries? -
我已经编辑了问题以提供一些示例数据,这不是为了开始
标签: python python-3.x recursion tree hierarchy