在Ruby中怎么按哈希值降序排序?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (17)

我的输入哈希: h = { "a" => 20, "b" => 30, "c" => 10 }

升序排序: h.sort {|a,b| a[1]<=>b[1]} #=> [["c", 10], ["a", 20], ["b", 30]]

但是我需要 [["b", 30], ["a", 20], ["c", 10]]

我们如何才能使其反过来工作,<=>意味着什么?

提问于
用户回答回答于

这个:

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

我以3000次迭代为基础对基于1000个元素的散列进行基准排序,并得到以下:

h.sort {|x,y| -(x[1]<=>y[1])} -- 16.7s
h.sort {|x,y| y[1] <=> x[1]} -- 12.3s
h.sort_by {|k,v| -v} -- 5.9s
h.sort_by {|k,v| v}.reverse -- 3.7
用户回答回答于

扫码关注云+社区