首页 > 解决方案 > 从二维列表构建树层次结构

问题描述

我有一个看起来像这样的二维列表:

[
    ["elem1","elem2"],
    ["elem1","elem3"],
    ["elem4","elem7"],
...
]

我想创建一个嵌套字典,然后看起来像这样:

[{"elem1":["elem2","elem3"]},{"elem4":"elem7"}]

因此,初始子列表之一中的索引越高,生成的树中的层次位置就越高。你会如何在 python 中解决这个问题?你怎么称呼它为“树化”?我觉得必须有一个包可以做到这一点。

标签: pythonlisttree

解决方案


这是可以帮助您获得所需输出的代码

data = [
    ["elem1","elem2"],
    ["elem1","elem3"],
    ["elem4","elem7"],
]

maplist = {}
for a in data:
    if a[0] in maplist:
         maplist[a[0]].append(a[1])
    else:
        maplist[a[0]] = [a[1]]

print(maplist)

要根据列表项进行排序,您可以使用以下代码

sorted_items = sorted(maplist.items(), key = lambda item : len(item[1]), reverse=True)

推荐阅读