可能重复:
Sorting a hash in Ruby by its value first then its key.
我需要排序一个散列,以便该值是第一优先级,然后当值相同时,它按键排序。
我目前正在使用这段代码进行排序,但我不知道如何使用第二个元素来执行sort_by。
Hash[@card_value_counts.sort_by{|k, v| k * -1}]我要找的例子是:
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}发布于 2011-06-10 16:09:02
数组有一个很酷的特性:将两个数组与<=>方法进行比较,将它们逐个元素地进行比较。您可以利用它进行多值排序:
sorted_hash = Hash[original_hash.sort_by { |k,v| [-1 * v, -1 * k] }]更新:也许您已经知道这一点,但我认为您使用的是Ruby1.9。在早期版本中,哈希不能保证维持其顺序。
https://stackoverflow.com/questions/6309032
复制相似问题