이것은 내 해시입니다.Ruby 해시 - 값 및 인쇄 키순으로 정렬
=> {"f11"=>1, "f12"=>3, "f13"=>3, "f07"=>5, "f10"=>1}
큰 값에서 작은 값까지 정렬 한 다음 키 배열을 만들고 싶습니다.
h.keys.sort {|a, b| h[b] <=> h[a]}
희망하는 데 도움이 :
=> ["f07", "f12", "f13", "f11", "f10"]
이것은 내 해시입니다.Ruby 해시 - 값 및 인쇄 키순으로 정렬
=> {"f11"=>1, "f12"=>3, "f13"=>3, "f07"=>5, "f10"=>1}
큰 값에서 작은 값까지 정렬 한 다음 키 배열을 만들고 싶습니다.
h.keys.sort {|a, b| h[b] <=> h[a]}
희망하는 데 도움이 :
=> ["f07", "f12", "f13", "f11", "f10"]
여기 당신을 위해 한 줄 (! 내가 루비를 사랑)입니다!
wow 이것이 정확히 무엇입니까? 필요한 것. 너 대 남자. –
a = {"f11"=>1, "f12"=>3, "f13"=>3, "f07"=>5, "f10"=>1}
b = Hash[a.sort_by{|k,v| v}]
puts b.keys.reverse
감사합니다. 어떻게 키를 배열에 넣을 수 있습니까? –
해시에서 키를 호출하면 배열 배열이 반환됩니다.이 경우 b.keys는 값이 내림차순으로 정렬되기를 원하기 때문에 배열 자체를 반환합니다. – saihgala
nm, 위에 답변했습니다. –
해시에는 sort 및 sort_by와 같은 메소드를 제공하는 Enumerable 모듈이 있습니다.이 경우 sort_by를 사용하여 값의 순서에 따라 콜렉션을 얻을 수 있습니다.
h={"f11"=>1, "f12"=>3, "f13"=>3, "f07"=>5, "f10"=>1}
h.sort_by{ |key, value| -value }
=> [["f07", 5], ["f12", 3], ["f13", 3], ["f11", 1], ["f10", 1]]
비록 짧은! :
h.keys.sort_by{|a| h[a]}.reverse
난 당신이 또한 값이 동일 할 때 키를 주문하려는 것 같아요? – oldergod