web-dev-qa-db-fra.com

Comment trier un hachage par valeur dans l'ordre décroissant et sortir un hachage en rubis?

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
36
tipsywacky

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]
87
Luke

Essaye ça:

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