반응형
해시의 값을 기준으로 해시 배열을 어떻게 정렬합니까?
이 루비 코드는 예상대로 작동하지 않습니다.
# create an array of hashes
sort_me = []
sort_me.push({"value"=>1, "name"=>"a"})
sort_me.push({"value"=>3, "name"=>"c"})
sort_me.push({"value"=>2, "name"=>"b"})
# sort
sort_me.sort_by { |k| k["value"]}
# same order as above!
puts sort_me
키 "값"으로 해시 배열을 정렬하려고하지만 정렬되지 않은 상태로 인쇄됩니다.
루비 sort는 제자리에서 정렬되지 않습니다. (아마도 파이썬 배경이 있습니까?)
루비에는 sort!인플레 이스 정렬이 있지만에 대한 인플레 이스 변형은 없습니다 sort_by. 실제로 다음을 수행 할 수 있습니다.
sorted = sort_me.sort_by { |k| k["value"] }
puts sorted
@shteef에 sort!따라 제안 되었지만 변형으로 구현되었습니다 .
sort_me.sort! { |x, y| x["value"] <=> y["value"] }
Ruby에는 sort_by적절한 변형 이 없지만 다음을 수행 할 수 있습니다.
sort_me = sort_me.sort_by { |k| k["value"] }
Array.sort_by! 1.9.2에 추가되었습니다
사용할 수 있습니다 sort_me.sort_by!{ |k| k["value"]}. 이 작동합니다.
참고 URL : https://stackoverflow.com/questions/3154111/how-do-i-sort-an-array-of-hashes-by-a-value-in-the-hash
반응형
'Programing' 카테고리의 다른 글
| 자바; (0) | 2020.07.27 |
|---|---|
| 반복하는 동안 HashSet에서 요소 제거 (0) | 2020.07.27 |
| null + true는 어떻게 문자열입니까? (0) | 2020.07.27 |
| 전체 화면을 채우시겠습니까? (0) | 2020.07.27 |
| 전체 심볼릭 링크 경로를 보는 방법 (0) | 2020.07.27 |