해시의 값을 기준으로 해시 배열을 정렬하려면 어떻게 해야 합니까?
이 Ruby 코드는 제가 예상한 것처럼 작동하지 않습니다.
# 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
Ruby 1.8에서.실제로 다음을 수행할 수 있습니다.
sorted = sort_me.sort_by { |k| k["value"] }
puts sorted
루비 1.9+ 기준으로.sort_by!
내부 정렬에 사용할 수 있습니다.
sort_me.sort_by! { |k| k["value"]}
@shteef에 따라 하지만 다음과 함께 구현됨sort!
제안된 대로 변형:
sort_me.sort! { |x, y| x["value"] <=> y["value"] }
비록 루비가 가지고 있지 않지만,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) | 2023.06.03 |
---|---|
git 저장소에서 패치 또는 diff 파일을 생성하여 다른 git 저장소에 적용 (0) | 2023.06.03 |
Unix - 폴더 및 파일 경로 만들기 (0) | 2023.06.03 |
루비 버전 2.0.0을 Mac OS X v10.10(요세미티)의 최신 버전으로 업데이트하려면 어떻게 해야 합니까? (0) | 2023.06.03 |
Android 버튼을 비활성화하는 방법은 무엇입니까? (0) | 2023.06.03 |