2013-04-13 3 views
2

Можно ли взять Hash рубина, такие какRuby: Сортировка хэш по ключу и ничьи на значение

{"aaa" => 255, "abc" => 255, "acb" => 255, "dcv" => 2300, "abe" => 1} 

И сортируют их в Array как такой

[["dcv", 2300], ["aaa", 255], ["abc" => 255], ["acb" => 255], ["abe", 1]] 

Использование метод sort_by? Этот тип должен создавать массив массивов, отсортированный сначала численными вхождениями в порядке убывания, а затем по связям, которые он должен сортировать по строке в алфавитном порядке в порядке возрастания.

ответ

4
h = {"aaa" => 255, "abc" => 255, "acb" => 255, "dcv" => 2300, "abe" => 1} 
h.sort_by { |k,v| [-v,k] } 
# => [["dcv", 2300], ["aaa", 255], ["abc", 255], ["acb", 255], ["abe", 1]] 
+0

Для получения дополнительной информации см также: http://www.rubyinside.com/how-to/ruby-sort-hash –

+0

Может вы просто не использовать 'h.sort_by {| k, v | -v} '? –

+1

@yossarian, который работает случайно. При изменении порядка хэша не выполняется правило тай-брейка. – steenslag

0

Другой способ решения его

h = h.sort_by { |k,v| v }.reverse 

puts h.inspect 
Смежные вопросы