如何按降序按值排序哈希并在ruby中输出哈希?

tip*_*cky 37 ruby sorting hash ruby-on-rails

output.sort_by {|k, v| v}.reverse
Run Code Online (Sandbox Code Playgroud)

和钥匙

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

Hash[h.sort]
Run Code Online (Sandbox Code Playgroud)

现在我有这两个.但我正在尝试按值降序排序哈希,以便它返回

=> {"d"=>4, "c"=>3, "b"=>2, "a"=>1 }
Run Code Online (Sandbox Code Playgroud)

提前致谢.

编辑:让我发布整个代码.

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
Run Code Online (Sandbox Code Playgroud)

Luk*_*uke 87

尝试:

Hash[h.sort.reverse]
Run Code Online (Sandbox Code Playgroud)

这应该返回你想要的.

编辑:

按价值来做:

Hash[h.sort_by{|k, v| v}.reverse]
Run Code Online (Sandbox Code Playgroud)


小智 27

试试这个:

Hash[h.sort_by{ |_, v| -v }]
Run Code Online (Sandbox Code Playgroud)