这是我的哈希。
=> {"f11"=>1, "f12"=>3, "f13"=>3, "f07"=>5, "f10"=>1}
我想按从最大到最小的值排序,然后从键中创建一个数组。
=> ["f07", "f12", "f13", "f11", "f10"]
答案 0 :(得分:6)
这是给你的单行(我爱红宝石!):
h.keys.sort {|a, b| h[b] <=> h[a]}
希望有所帮助!
答案 1 :(得分:3)
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]]
答案 2 :(得分:3)
更短!:
h.keys.sort_by{|a| h[a]}.reverse
答案 3 :(得分:1)
a = {"f11"=>1, "f12"=>3, "f13"=>3, "f07"=>5, "f10"=>1}
b = Hash[a.sort_by{|k,v| v}]
puts b.keys.reverse