これは私のハッシュです。
=> {"f11"=>1, "f12"=>3, "f13"=>3, "f07"=>5, "f10"=>1}
最大値から最小値に並べ替えてから、キーから配列を作成したいと思います。
=> ["f07", "f12", "f13", "f11", "f10"]
これはあなたのためのワンライナーです(私はルビーが大好きです!):
h.keys.sort {|a, b| h[b] <=> h[a]}
それが役立つことを願っています!
Hash には Enumerable モジュールが混在しており、sort や sort_by などのメソッドを提供します。この状況では、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
a = {"f11"=>1, "f12"=>3, "f13"=>3, "f07"=>5, "f10"=>1}
b = Hash[a.sort_by{|k,v| v}]
puts b.keys.reverse