Python の専門家ではありません。この並べ替えをより迅速に実装しようとしています。現在、オブジェクトを含むハッシュがあり、それらのオブジェクトのメソッドへの呼び出しでそれらを並べ替えています。sorted() がどのように機能しているかはわかりません-これは比較ごとに複数のメソッド呼び出しを行っていますか? おそらく、メソッド呼び出しをハッシュ自体に保存し、それをソートした方がよいでしょうか?
sorted(hash_object.items(), key=lambda x:x[1].method_call_here())
現在、かなり遅いソートである ~100 ~ 400 ミリ秒かかります。考え?
メソッド呼び出しがここにあることに応答します。私はそれが方法であることに懐疑的です。これは 0.2 ミリ秒で実行される私の Ruby 実装の直接ポートですが、何らかの理由で Python では遅いかもしれません。実にシンプルな方法ですが。以下のトラック品質メソッドを呼び出しています。
class Track:
def __init__(self, title, play_count, track_number):
self.title = title
self.play_count = play_count
self.track_number = track_number
def predicted_listens(self):
return 1/self.track_number
def track_quality(self):
return self.play_count/self.predicted_listens()
参考までに、Ruby ソースと同じものを実装しているように見えます。
self.sort_by { |track| track.quality }
私の推測では、ボンネットの下で何が起こっているかについては間違っています。