output.sort_by {|k, v| v}.reverse
et pour les clés
h = {"a"=>1, "c"=>3, "b"=>2, "d"=>4}
=> {"a"=>1, "c"=>3, "b"=>2, "d"=>4}
Hash[h.sort]
En ce moment, j'ai ces deux. Mais j'essaie de trier le hachage par ordre décroissant par valeur afin qu'il revienne
=> {"d"=>4, "c"=>3, "b"=>2, "a"=>1 }
Merci d'avance.
Edit: permettez-moi de publier tout le code.
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
Essayer:
Hash[h.sort.reverse]
Cela devrait retourner ce que vous voulez.
Modifier:
Pour le faire par valeur:
Hash[h.sort_by{|k, v| v}.reverse]
Essaye ça:
Hash[h.sort_by{ |_, v| -v }]