我有项目的输出(列表),例如:

Root
  Branch1
    LeafA
    LeafB
  Branch2
    LeafC
      LeafZ
    LeafD


它们都是两个空格分隔的。
我想建立一个没有前导空格的列表的逻辑表示,并保留父子关系。

最终可能的结果:

aDict = {
    'Root': null,
    'Branch1': 'Root',
    'LeafA': 'Branch1',
... so on and so forth
}


最终,我要遍历字典并检索Key和parent,以及基于Key的另一个dict中的另一个值。

最佳答案

尝试这个:

tree = """Root
  Branch1
    LeafA
    LeafB
  Branch2
    LeafC
      LeafZ
    LeafD"""

aDict = {}
iDict = {}
for line in tree.split("\n"):
    key = line.lstrip(" ")
    indent = (len(line) - len(key)) / 2
    if indent == 0:
        aDict[key] = None
    else:
        aDict[key] = iDict[indent - 1]
    iDict[indent] = key

print aDict
# {'LeafD': 'Branch2', 'LeafA': 'Branch1', 'Branch2': 'Root', 'LeafC': 'Branch2', 'LeafB': 'Branch1', 'Branch1': 'Root', 'Root': None, 'LeafZ': 'LeafC'}

09-12 17:57