Ruby on rails 希望在ruby中首先按值对哈希进行排序,然后按键进行排序
可能重复:Ruby on rails 希望在ruby中首先按值对哈希进行排序,然后按键进行排序,ruby-on-rails,ruby,Ruby On Rails,Ruby,可能重复: 我需要对散列进行排序,使值成为第一优先级,然后当值相同时,它按键排序 我目前正在使用这段代码进行排序,但我不知道如何使用第二个元素进行排序 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=>
我需要对散列进行排序,使值成为第一优先级,然后当值相同时,它按键排序 我目前正在使用这段代码进行排序,但我不知道如何使用第二个元素进行排序
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}
数组有一个很酷的特性:使用
方法比较两个数组将逐个元素进行比较。您可以利用此功能进行多值排序:
sorted_hash = Hash[original_hash.sort_by { |k,v| [-1 * v, -1 * k] }]
更新:也许你已经知道了,但我假设你使用的是Ruby 1.9。在早期版本中,哈希不能保证保持其顺序。数组有一个很酷的特性:使用
方法比较两个数组将逐个元素进行比较。您可以利用此功能进行多值排序:
sorted_hash = Hash[original_hash.sort_by { |k,v| [-1 * v, -1 * k] }]
更新:也许你已经知道了,但我假设你使用的是Ruby 1.9。在早期版本中,哈希不能保证保持顺序。不熟悉Ruby的
sort\u by
函数,但可以先按键排序,然后对值使用稳定排序。(与基数排序相同)不熟悉Ruby的sort_by
函数,但可以先按键排序,然后对值使用稳定排序。(与基数排序的想法相同。)