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

そして、リストをツリー構造のネストされたリストにする必要があります。次に例を示します。

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

私が必要とする同様のツリーを生成するこの投稿を実行しましたが、それはネストされたリストの対称セットで機能します。リスト アイテムのgroupby機能を使用しようとしましたが、目的の形式でリストを生成できませんでした。Pythonには、現在欠けているものを簡単に実行できるものがあると思います。いくつかの指針をいただければ幸いです。

4

1 に答える 1

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: {}}}
于 2013-03-16T12:26:16.923 に答える