3

キーに基づく迅速な検索を可能にするデータ構造を実装しようとしています。

dict私のルックアップが等式を含む場合、Pythonは素晴らしいです
(たとえば、key == somevalueに変換されdatadict[somevalue]ます.

key > 50問題は、より複雑な比較 (や など)に基づいてキーを効率的に検索できるようにする必要があることkey.startswith('abc')です。

明らかに、両方のケースで同じソリューションを使用することはできませんが、現時点ではどちらのケースも解決する方法がわかりません。誰でもこれを行う方法を提案できますか?

4

2 に答える 2

4

ハッシュアルゴリズムが必要なようには思えません-代わりに、何らかの形式のバイナリツリーが必要です。bisectまたは、モジュールを使用するリストですら。一見の価値があります: Python の標準ライブラリ - バランスの取れたバイナリ ツリー用のモジュールはありますか?

別のオプション (データに応じて) は、メモリsqlite3内データベースを使用し、可能なルックアップに適切なインデックスを作成することですが、柔軟性のためにパフォーマンス/メモリと SQL 構文を交換します...

于 2012-11-28T12:28:10.597 に答える
3
  • すべてのデータ項目をリストに入れます。
  • リストをキーでソートします。
  • 二分探索を使用して、どこで、key > 50またはどこでアイテムを効率的に検索しますkey.startswith('abc')

もちろん、これは非常に多くのデータ項目がある場合にのみ効果があります。それほど多くない場合は、リストをループして条件をすべてのキーに適用します。

于 2012-11-28T12:27:11.303 に答える