파이썬 사람이 아닙니다.이 정렬을 더 빠르게 구현하려고합니다. 현재 개체를 포함하는 해시가 있으며 이러한 개체의 메서드 호출에 따라 정렬됩니다. 나는 sorted()가 어떻게 작동하는지에 대해서는 확신하지 못한다. 이것은 비교마다 여러 개의 메소드를 호출하는 것인가? 아마도 해시 자체에 메서드 호출을 저장하고이를 정렬하는 것이 더 낫지는 않습니까?빠른 파이썬 정렬 구현
sorted(hash_object.items(), key=lambda x:x[1].method_call_here())
현재 약 100-400ms가 걸리는데 이는 상당히 느린 정렬입니다. 생각?
메서드 호출의 응답은 여기에 있습니다. 나는 그것이 방법이라는 것에 회의적이다. 0.2ms로 실행되는 내 Ruby 구현의 직접 포트이지만, 파이썬에서는 어떤 이유로 느려질 수 있습니다. 정말 간단한 방법. 그것은 아래의 트랙 품질 메소드를 호출하는 것 :
self.sort_by { |track| track.quality }
내 생각 엔 내가 무엇을 아래에서 무슨 일이 일어나고에 대한 틀렸다 : 그것은 루비 소스와 동일 뭔가를 구현하는 것처럼
참고로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()
, 그것은 보인다 후드.
소리가 잘 들리지 않습니다. 루비 정렬은 500 배 빠릅니다. 대략 얼마나 많은 품목에 대해서 이야기하고 있습니까? –
이 Python2는 Python3입니까? 'self.track_number'가 Python2에서'int' 인 경우'1/self.track_number'가 잘립니다. –
이 오래된 컴퓨터에서는 100,000 개 항목을 정렬하는 데 약 148ms가 걸렸습니다. 그게 바로 볼 파크에 있니? –