3

これは私のハッシュです。

=> {"f11"=>1, "f12"=>3, "f13"=>3, "f07"=>5, "f10"=>1}

最大値から最小値に並べ替えてから、キーから配列を作成したいと思います。

=> ["f07", "f12", "f13", "f11", "f10"]
4

4 に答える 4

6

これはあなたのためのワンライナーです(私はルビーが大好きです!):

h.keys.sort {|a, b| h[b] <=> h[a]}

それが役立つことを願っています!

于 2012-09-10T04:39:25.470 に答える
3

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]]
于 2012-09-10T04:57:40.423 に答える
3

さらに短い!:

h.keys.sort_by{|a| h[a]}.reverse
于 2012-09-10T04:58:57.163 に答える
1
a = {"f11"=>1, "f12"=>3, "f13"=>3, "f07"=>5, "f10"=>1}
b = Hash[a.sort_by{|k,v| v}]
puts b.keys.reverse
于 2012-09-10T04:38:59.597 に答える