不是 Python 人——试图更快地实现这种类型。目前我有一个包含对象的哈希,并且我在调用这些对象的方法时对它们进行排序。我不确定 sorted() 是如何运作的——这是每次比较都会调用多个方法吗?将方法调用存储在哈希本身并对其进行排序会更好吗?
sorted(hash_object.items(), key=lambda x:x[1].method_call_here())
目前大约需要 100-400 毫秒,这是一个相当慢的排序。想法?
响应这里的方法调用是什么;我怀疑这是方法。它是我的 Ruby 实现的直接端口,运行时间为 0.2 毫秒,但由于某种原因,它在 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 }
我的猜测是我对幕后发生的事情是错误的。