首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Ruby中哈希值的降序排序

Ruby中哈希值的降序排序
EN

Stack Overflow用户
提问于 2010-11-24 14:46:59
回答 4查看 59K关注 0票数 80

我的输入散列: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]]

反过来说,我们如何才能让它工作呢?<=>是什么意思?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-11-24 19:59:46

你可以让它一下子变得更干净,更清晰,更快!如下所示:

代码语言:javascript
复制
h.sort_by {|k,v| v}.reverse

我用随机值对1000个元素的散列排序的3000次迭代进行了基准测试,得到了以下时间:

代码语言:javascript
复制
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
票数 194
EN

Stack Overflow用户

发布于 2010-11-24 14:52:51

代码语言:javascript
复制
h.sort {|a,b| b[1]<=>a[1]}
票数 12
EN

Stack Overflow用户

发布于 2010-11-24 14:51:56

<=>比较两个操作数,如果第一个操作数较低,则返回-1;如果第一个操作数相等,则返回0;如果第一个操作数较高,则返回1。这意味着您可以只执行-(a[1]<=>b[1])来颠倒顺序。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4264133

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档