首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >希望先按值排序ruby中的散列,然后再按键进行排序。

希望先按值排序ruby中的散列,然后再按键进行排序。
EN

Stack Overflow用户
提问于 2011-06-10 16:03:41
回答 1查看 2.2K关注 0票数 0

可能重复:

Sorting a hash in Ruby by its value first then its key.

我需要排序一个散列,以便该值是第一优先级,然后当值相同时,它按键排序。

我目前正在使用这段代码进行排序,但我不知道如何使用第二个元素来执行sort_by。

代码语言:javascript
运行
复制
Hash[@card_value_counts.sort_by{|k, v| k * -1}]

我要找的例子是:

代码语言:javascript
运行
复制
pre_sorted = {10=>1, 9=>2, 3=>2, 2=>1, 1=>1}
sorted = {9=>2, 3=>2, 10=>1, 2=>1, 1=>1}

pre_sorted = {12=>2, 10=>3, 9=>4, 5=>3}
sorted = {9=>4, 10=>3, 5=>3, 12=>2}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-06-10 16:09:02

数组有一个很酷的特性:将两个数组与<=>方法进行比较,将它们逐个元素地进行比较。您可以利用它进行多值排序:

代码语言:javascript
运行
复制
sorted_hash = Hash[original_hash.sort_by { |k,v| [-1 * v, -1 * k] }]

更新:也许您已经知道这一点,但我认为您使用的是Ruby1.9。在早期版本中,哈希不能保证维持其顺序。

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

https://stackoverflow.com/questions/6309032

复制
相关文章

相似问题

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