0

Python経由で処理する次のタイプのファイルがあります。

key1 value1 value3 value5
key2 value2 value6
key3 value1 value5
key4 value4 value6 value5
key5 value4 value5 value6
key6 value3
....
keyN value5 value1

キーはすべて一意であり、可能な値は 6 つしかありませんが、それらは任意の順序で表示され、各キーに関連付けられたゼロ以外の数 (1 から 6 の間) が存在する可能性があります。

このファイルを並べ替えて、値のパターンがまったく同じ行の数、つまりパターン「値 1 値 3 値 5」の行数を特定する方法はありますか? パターン「value2 value6」などは何行ありますか? 上記の例では、key4 と key5 (または key3 と keyN) で始まる行を同じパターンとしてカウントする必要があります。

出力は、上記の方法で並べ替えられた同じファイルである必要があります。

私はこれを行う方法に完全に困惑しています...どんな助けも大歓迎です! ありがとうございました。

4

2 に答える 2

0

各行を、最初のエントリにキーを含み、2 番目のエントリに値のセカンダリ リストを含むリストに変換することを検討します。次に、次のようなことができます。

行をループして、各行の値のリストのエントリを並べ替えます。

次に、各行のキーとすべての値の連結の並べ替え順序で行を並べ替えます。

最後に、各キーの値リストのリストを作成し、そのリストの長さの逆順に並べ替えます。

この結果を得るには多くの方法が考えられることは間違いありませんが、説明したよりも効率的な方法もあります。Python での並べ替えに関する次の議論から、いくつかのインスピレーションが得られるかもしれません。

http://wiki.python.org/moin/HowTo/Sorting/

編集:Thomas B.の答えは、そのようなソートを実装する方法の良い例です(そして、私の答えが示すように、実際のデータ構造をシャッフルするよりもきれいです)が、正しい順序で彼の3つのソートを行う必要があります探している結果であり、彼のコードは 3 つのうちの 1 つしか実装していません。

于 2013-08-09T07:18:57.567 に答える