ruby - 按 Ruby 中哈希的值降序排序

标签 ruby sorting hash

我的输入哈希: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

我对使用随机值对 1000 元素散列进行排序的 3000 次迭代的计时进行了基准测试,并得到了这些时间:

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

关于ruby - 按 Ruby 中哈希的值降序排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4264133/

相关文章:

ruby - 在 Ruby 中对哈希数组进行排序(按存在可选键+值排序)

c - 帮助实现快速排序

python-3.x - 根据绘图颜色对相似度矩阵进行排序

c - 开放寻址冲突解决

ruby-on-rails - 无法批量分配 protected 属性 : password_confrimation

ruby-on-rails - Rails 2.3 四级嵌套表单 Javascript 函数

ruby-on-rails - 跳过载波完整性和处理验证

ruby - 使用 rbenv/ruby-build 安装 bundler

node.js - 将值 append 到 Hashfield

ios - 用于测试 facebookAds 的设备的散列 ID?