コレクション内のアイテムの非常に高速なルックアップをどのように実装する必要がありますか?
class Person(object):
__all__ = dict()
def __init__(self, _id, name, age):
self._id = _id
self.name = name
self.age = age
self.__class__.__all__[_id] = self
最年長の5人を取得したいとします。len(Person.__all__)
が非常に大きく、この操作を頻繁に行う必要がある場合、ベストプラクティスは何ですか?現在、私のコードの実行には約4時間かかりますが、まだデータセット全体をフィードしていません。
私の現在の考えは、データベースを使用してインデックスを維持できると考えていますが、これはすべてのオブジェクトをRAMに保持するよりも遅いと感じています。(私はすべてのオブジェクトをラムに快適に収めることができます)。
または、Python内で、自動ソートされたリストに基づいたある種のインデックスを持つことができます。したがって、特定の年齢の人を検索する必要がある場合は、そのリストを照会してIDを検索し、それを使用Person.__all__
してオブジェクト自体を取得します。
最良の選択肢は何でしょうか?