web-dev-qa-db-ja.com

値でハッシュを降順でソートし、ルビーでハッシュを出力する方法は?

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

およびキー用

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

Hash[h.sort]

今、私はこれら二つを持っています。しかし、私はそれが返されるように値で降順でハッシュをソートしようとしています

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

前もって感謝します。

編集:コード全体を投稿させてください。

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

試してください:

Hash[h.sort.reverse]

これにより、必要なものが返されます。

編集:

値で行うには:

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

これを試して:

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