Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 希望在ruby中首先按值对哈希进行排序,然后按键进行排序_Ruby On Rails_Ruby - Fatal编程技术网

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
函数,但可以先按键排序,然后对值使用稳定排序。(与基数排序的想法相同。)