URLを格納する辞書のリストがあります。単純に2つのフィールド、title
とurl
があります。例:リスト内の一連のURLをツリー構造として表現する
[
{'title': 'Index Page', 'url': 'http://www.example.com/something/index.htm'},
{'title': 'Other Page', 'url': 'http://www.example.com/something/other.htm'},
{'title': 'About Page', 'url': 'http://www.example.com/thatthing/about.htm'},
{'title': 'Detail Page', 'url': 'http://www.example.com/something/thisthing/detail.htm'},
]
しかし、私はこのdictsのリストからツリー構造を取得したいと思います。私はこのような何かを探しています:この時
{ 'www.example.com':
[
{ 'something':
[
{ 'thisthing':
[
{ 'title': 'Detail Page', 'url': 'detail.htm'}
]
},
[
{ 'title': 'Index Page', 'url': 'index.htm'},
{ 'title': 'Other Page', 'url': 'other.htm'}
]
]
},
{ 'thatthing':
[
{ 'title': 'About Page', 'url': 'about.htm'}
]
}
]
}
私の最初の試みは、forループの束でurlparseスープだろうと私はこれを行うには良いとより高速な方法があることを確信しています。
私はリスト内包、ラムダ関数などでSOの仕事の魔法を知っています。私はまだそれを理解しています。 (Djangoの開発者のために:私は私のDjangoアプリケーションこれを使うことに、私は二つのフィールドname
とtitle
ありPage
というモデル内のURL格納しています。)
これは、1レベルの深さのパスでのみ機能するようです。私はより明示されています。これは 'http:// www.example.com/thisthing/thisthing/about.htm'のようなURLでは機能しません。 –
こんにちは。私はモデルを変更する自由がないので、その通りです。上記を行う理由は、これらすべてのレコードをJSONで返すためです。あなたは、ノードがページ集合であるかどうかを調べるリストであるかどうかをチェックすることは醜いですが、このようなデータを表現するためのより良いツリー形式を考えることはできませんでした。そのURLのリストをサンプルのデータ形式に変換しようとしているという本来の問題に戻ります。私は本当にあなたの助けに感謝しますが、何とかそれを変換する方法を私に示すことができれば、それは安堵でしょう。私は頭を打ちのめしているが運がない。ありがとうJro。 –
Aha。ありがとうございました。 Thaks you Jro。私はすでにあなたの答えを受け入れましたが、一つの小さなこと:空の辞書とリストをすべて削除するにはどうすればいいですか?私はツリー全体を横断するために再帰する必要がありますか? –