Ruby:按键对哈希进行排序,并在值上打破平局

时间:2013-04-13 22:35:30

标签: ruby sorting associative-array

是否可以在红宝石中使用Hash,例如

{"aaa" => 255, "abc" => 255, "acb" => 255, "dcv" => 2300, "abe" => 1}

然后将其分类为Array这样的

[["dcv", 2300], ["aaa", 255], ["abc" => 255], ["acb" => 255], ["abe", 1]]

使用sort_by方法?这种排序应该产生一个数组数组,这些数组首先按数字顺序排序,然后按照字符顺序按字母顺序按字母顺序排序。

2 个答案:

答案 0 :(得分:4)

h = {"aaa" => 255, "abc" => 255, "acb" => 255, "dcv" => 2300, "abe" => 1}
h.sort_by { |k,v| [-v,k] }
# => [["dcv", 2300], ["aaa", 255], ["abc", 255], ["acb", 255], ["abe", 1]]

答案 1 :(得分:0)

另一种解决方法

h = h.sort_by { |k,v| v }.reverse

puts h.inspect