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

use*_*457 2 ruby sorting associative-array

是否可以Hash在 ruby​​ 中使用,例如

{"aaa" => 255, "abc" => 255, "acb" => 255, "dcv" => 2300, "abe" => 1}
Run Code Online (Sandbox Code Playgroud)

并把它分类成Array这样

[["dcv", 2300], ["aaa", 255], ["abc" => 255], ["acb" => 255], ["abe", 1]]
Run Code Online (Sandbox Code Playgroud)

使用sort_by方法?这种排序应该产生一个数组数组,这些数组首先按数字出现的降序排序,然后在平局上它应该按字母顺序按升序对字符串进行排序。

dbe*_*hur 5

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]]
Run Code Online (Sandbox Code Playgroud)