私はリストのリストをPythonで持っています。それらをより一貫性のある順序付き辞書に集めたいと思います。入れ子リスト(Python)を辞書にグループ化するにはどうすればいいですか?
データの形式は次のとおりです。
[
['1_1', '2_1', '3_1', '4_1'],
['1_1', '2_1', '3_2', '4_1'],
['1_1', '2_2', '3_1', '4_1'],
['1_1', '2_2', '3_1', '4_2'],
['1_1', '2_2', '3_1', '4_3'],
['1_1', '2_2', '3_2', '4_1', '5_1'],
['1_1', '2_2', '3_2', '4_2', '5_1'],
['1_1', '2_2', '3_2', '4_2', '5_2'],
and so on...
]
結局、私が取得するために探していますが、第一、第二の同じ項目のオフに基づいてリストと分類を通じて行進することにより、辞書構造のいくつかの並べ替えです、3番目などのレベルになります。
私はのようなコードでこれを試すためにgroupby
で遊んでてきた:これは最初のレベルのために動作しますが、私はのために構造を再帰する方法についてこだわっている
_map = OrderedDict()
for key, group in groupby(big_list, lambda x: x[0]):
_map[key] = [l[1:] for l in group]
次第に深いレベルで同じ種類のグループ化を行います。
ご迷惑をおかけして申し訳ございません。
EDIT:downvotesで判断すると、これは良い質問ではないと思いますか?あなたは本当にgroupby()
を必要としない
{'1_1': {'2_1': {'3_1': {'4_1': {}}, '3_2': {'4_1': {}}},
'2_2': {'3_1': {'4_1': {}, '4_2': {}, '4_3': {}},
'3_2': {'4_1': {'5_1': {}},
'4_2': {'5_1': {},
'5_2': {}}
}
}
}
}
期待される出力を提供していないので、それは言うのが難しいです... –
あなたが何を意味するかはまったく分かりません。あなたがあなたがそれを説明したり、入力*と*出力の例を与えない限り、あなたのデータに見える構造は明確ではありません。 –
あなたが持っているデータは、木のような構造でよりよく分類/セグメント化されるように感じます。あなたのツリールートは '1_1'になります。 2人の子供がいます: '2_1'と '2_2'など。新しいリストごとに、適切なブランチの下にノードを作成します。このように、データは階層的に分類されます。 –