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

时间:2013-03-16 11:26:56

标签: python nested-lists

我有一个嵌套列表:

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]}]

我已经完成了这个post,它生成了一个我需要的类似树,但是它适用于对称的嵌套列表集。我已尝试使用列表项的groupby功能,但无法生成所需格式的列表。我想python中有一些东西可以轻松地完成,我目前缺少这些东西。一些指针将不胜感激。

1 个答案:

答案 0 :(得分:4)

如果你只能使用dict:

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: {}}}
相关问题