使用键的值对哈希进行排序

byt*_*uit 3 ruby

我有这样的哈希:

a = { 29 => 3, 14 => 6, 13 => 2, 32 => 10 }
Run Code Online (Sandbox Code Playgroud)

我想根据那里的值对这个哈希进行排序,即:3,6,2,10

我可以 a.values.sort

但它返回一个只有排序值的数组.我想对实际的哈希进行排序,所以它应该返回一个新的哈希值(或理想情况下用已排序的哈希值更新原始哈希值),并使用所有相同的键值对但排序!!

ste*_*lag 5

这适用于Ruby 1.9:

a = { 29 => 3, 14 => 6, 13 => 2, 32 => 10 }
p Hash[a.sort_by{|k,v| v}]
#=> {13=>2, 29=>3, 14=>6, 32=>10}
Run Code Online (Sandbox Code Playgroud)

  • 很酷,但他希望按价值排序:`哈希[a.invert.sort] .invert` (2认同)