最高のランタイムでその構造を管理し、そのランキングでXオブジェクトを格納できるデータ構造を使用します。Python - 「ランクリスト」がありますか?1つ実装する必要があります
これをRank_List()
とします。 X = 2
を定義すると、次のようになります。 obj1がより高いランク付けされ、別のオブジェクトを追加した後
ranked_list = Rank_List()
ranked_list.add((obj1, 0.5)
print ranked_list -> [(obj1, 0.5)]
ranked_list.add((obj2, 0.75))
print ranked_list -> [(obj2, 0.75), (obj1, 0.5)]
だから我々はそれが(最初の場所にあり、0.5は第二である0.75)のチェックにランクを保持見ることができます
ranked_list.add(obj3, 0.7)
print ranked_list -> [(obj2, 0.75), (obj3, 0.7)]
、 obj1はリストからキャストされます(X = 2
)ので、最大2個のオブジェクトしかリストに格納されません。
すでにPythonに存在するようなデータ構造はありますか? 最良のランタイム結果を得るにはどの方法で実装すればよいですか
ソートされた順番で自動的に保持されるリストを希望しますか?いいえ、そのような構造はありません。毎回最高ランクの要素を抽出する目的は何ですか?残りをソート順に並べる必要はなく、ヒープ( 'heapq'モジュールを参照)を使うか、優先順位キュー(スレッドセーフバージョンは' queue'モジュールにあります)を使用します。 –
Z <= XのときにZの最初の要素を取得することが目標です。いつでも、リストにはより良い(obj、rank)が得られるので、維持する必要があります –
次にheapqを使用します。 –