sort_by sort descending ruby-on-rails ruby sorting hash

ruby-on-rails - ruby sort_by descending



¿Cómo ordenar un hash por valor en orden descendente y generar un hash en ruby? (2)

output.sort_by {|k, v| v}.reverse

y para llaves

h = {"a"=>1, "c"=>3, "b"=>2, "d"=>4} => {"a"=>1, "c"=>3, "b"=>2, "d"=>4} Hash[h.sort]

En este momento tengo estos dos. Pero estoy tratando de ordenar hash en orden descendente por valor para que regrese

=> {"d"=>4, "c"=>3, "b"=>2, "a"=>1 }

Gracias por adelantado.

Editar: déjame publicar todo el código.

def count_words(str) output = Hash.new(0) sentence = str.gsub(/,/, "").gsub(/''/,"").gsub(/-/, "").downcase words = sentence.split() words.each do |item| output[item] += 1 end puts Hash[output.sort_by{ |_, v| -v }] return Hash[output.sort_by{|k, v| v}.reverse] end


Prueba esto:

Hash[h.sort_by{ |_, v| -v }]


Tratar:

Hash[h.sort.reverse]

Esto debería devolver lo que quieras.

Editar:

Para hacerlo por valor:

Hash[h.sort_by{|k, v| v}.reverse]