从嵌套列表创建树状结构列表

4 投票
1 回答
3641 浏览
提问于 2025-04-17 19:18

我有一个嵌套列表:

l = [[1], [2,3], [2,4], [2,5], [2,5,6], [2,5,7], [2,5,8],[2,5,8,9], [10],[11,12]]

我需要把这个列表变成一个树状的嵌套列表,比如说:

l = [{1:[], 2:[3,4,{5: [6,7, {8: [9]}]}], 10: [], 11: [12]}]

我看过这个 帖子,它生成了一个我需要的类似树结构,不过那个是针对对称的嵌套列表。我尝试过使用 groupby 这个功能来处理列表项,但没能生成我想要的格式。我想在Python中应该有简单的方法可以做到这一点,但我现在还没找到。如果能给我一些提示就太好了。

1 个回答

4

如果你只能使用字典的话:

l = [[1], [2,3], [2,4], [2,5], [2,5,6], [2,5,7], [2,5,8],[2,5,8,9], [10],[11,12]]
root = {}
for path in l:
    parent = root
    for n in path:
        parent = parent.setdefault(n, {})
import pprint
pprint.pprint(root, width=1)

输出结果:

{1: {},
 2: {3: {},
     4: {},
     5: {6: {},
         7: {},
         8: {9: {}}}},
 10: {},
 11: {12: {}}}

撰写回答