1

辞書式順序をM個の偶数サイズのバケット(+/- 1文字列)に分割したいN個の文字列があります。また、N>>M。

直接的な方法は、すべての文字列を並べ替えて、結果のリストをM個のバケットに分割することです。

代わりに、完全なリストが利用可能になる前に、作成された各文字列をバケットにルーティングすることで、これを概算したいと思います。

文字列をバケットに割り当てるための高速でPythonの方法はありますか?私は基本的に、整数モジュロ演算子の文字列に相当するものを探しています。おそらく、辞書式順序を保持するハッシュですか?それも可能ですか?

4

2 に答える 2

0

定義上、ハッシュは順序を保持しません。

そして、私はこれを行うためのpythonicな方法はないと思います。

辞書(基本的にはハッシュ関数)を作成し、各ラウンドロビンスタイルに文字列を追加し続けることもできますが、順序は保持されません。

于 2012-08-24T21:01:22.370 に答える
0

文字列の最初の2文字、またはこの種のもので並べ替えることができます。

M=100たとえば、文字を領域に分割し、sqrt(M)それぞれが別の領域を指す必要があるとしましょうsqrt(M)。次に、取得した文字列ごとに、最初の文字を比較して、文字列をどの領域に転送するかを決定し、2番目の文字を繰り返します。葉としてバケットを持ち、ノードとして比較を行うツリーのようなものです。

于 2012-03-05T21:32:18.207 に答える