コレクション内のアイテムを非常に高速に検索する方法を教えてください。リストのインデックスを維持する
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__
を使ってオブジェクト自体を取得します。
どのようなオプションが最適でしょうか?
4時間? **あなたのDBに多くの人がいる必要があります...真剣に、あなたのコードを見せてください。 – eumiro
ちょうどデータベースに行ってください。 ( 'SELECT * FROM people ORDER BY age DESC LIMIT 5') – plaes
' __ * __ 'は予約されていると確信しています。プライベートプロパティを作成する場合は' __all'を使用してください。 – KurzedMetal