반응형
Ruby에서 해시 값을 기준으로 내림차순 정렬
내 입력 해시 : h = { "a" => 20, "b" => 30, "c" => 10 }
오름차순 정렬 : h.sort {|a,b| a[1]<=>b[1]} #=> [["c", 10], ["a", 20], ["b", 30]]
하지만 난 필요해 [["b", 30], ["a", 20], ["c", 10]]
어떻게하면 다른 방향으로 작동 할 수 <=>
있습니까? 은 무슨 뜻인가요?
한 번에 더 깨끗하고, 더 깨끗하고, 더 빠르게 만들 수 있습니다! 이렇게 :
h.sort_by {|k,v| v}.reverse
무작위 값으로 1000 개 요소 해시를 정렬하는 3000 회 반복에 대한 타이밍을 벤치마킹하고 다음과 같은 시간을 얻었습니다.
h.sort {|x,y| -(x[1]<=>y[1])} -- 16.7s
h.sort {|x,y| y[1] <=> x[1]} -- 12.3s
h.sort_by {|k,v| -v} -- 5.9s
h.sort_by {|k,v| v}.reverse -- 3.7
h.sort {|a,b| b[1]<=>a[1]}
<=>
두 피연산자를 비교하여 첫 번째 값이 낮 으면 -1을, 같으면 0을, 첫 번째 값이 높으면 1을 반환합니다. 이것은 -(a[1]<=>b[1])
순서를 반대로 할 수 있음을 의미합니다 .
매우 간단합니다. h.sort_by { |k, v| -v }
참고 URL : https://stackoverflow.com/questions/4264133/descending-sort-by-value-of-a-hash-in-ruby
반응형
'UFO ET IT' 카테고리의 다른 글
“rmagick”gem 설치 문제 (0) | 2020.11.12 |
---|---|
비교기를 사용한 정렬-내림차순 (사용자 정의 클래스) (0) | 2020.11.12 |
git 커밋에서 파일을 제거 할 수 없습니다. (0) | 2020.11.12 |
다른 JVM Lisps보다 Clojure가 필요한 이유 : Kawa, Armed Bear 또는 SISC? (0) | 2020.11.12 |
T4 템플릿에서 Linq를 어떻게 사용할 수 있습니까? (0) | 2020.11.11 |