2


1

現時点では盲目のようですので、ここで尋ねる必要があります。 そのように見えるタプルのリストをソートしたい

(id、parent_id、値)

それはツリーノードのリストのフラットエンドリストとしてのツリーの表現です。

例えば入力

(1、なし、 '...')(3、2 '、' ... ')(2、1、' ... ')(4、1、' ... ')(5、2、 '...')(6、なし、 '...')

その後そのようにソートする必要があります

(1、なし、 '...')(2、1、 '...')(3、2 '、' ... ')(5、2、' ... ')(4、1、 '...')(6、なし、 '...')

どんなヒントでも高く評価されるでしょう。 前もって感謝します。

3 Answer


2


Pythonはタプルを左から右にソートするので、最初のソートキーが最初の項目になるようにタプルを配置すると、それほど効率的になります。

タプルのリストからツリーへのマッピングは、あなたが説明していることからは明らかではありません。 引き出すか、もっと詳しく説明してください。 たとえば、あなたの例は次のようになります。

http://web.sabi.net/temp/tree.png[ツリー図http://web.sabi.net/temp/tree.png]

親を持たない2つのノードがある場合、それは木よりも森のようなものです。 あなたは木で何を表現しようとしていますか? この文脈で「ソート」とはどういう意味ですか?


1


私があなたが正確にやろうとしていることに完全に従っているかどうかわからないが、もしあなたがノードのリストとしてフォレストを持っているなら、あなたはそれを読んでツリー構造を構築することはできない。 - すべての木の最初のトラバース? これを避けるための特別な理由はありますか?


0


Oliver、私が正しく理解していれば、(a)データベースからすべてのタプルを辞書またはリストに取り出し、それからツリーを作成するか、(b)タプルを取り出すときにORDER BY節を使用することができます。ツリーに追加する順番になっています。

あなたのアプリケーションでツリーに変更を加えてからデータベースに伝播させることができれば、私はそれを選ぶでしょう。オプションbはより速く、そしてより少ないリソースを必要とするはずです。

ローランド