如何排序价值降序排列,并输出红宝石哈希散列?(How to sort a hash by value

2019-08-02 07:17发布

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

Answer 1:

尝试:

Hash[h.sort.reverse]

这应返回你想要什么。

编辑:

要通过值做到这一点:

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


Answer 2:

试试这个:

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


文章来源: How to sort a hash by value in descending order and output a hash in ruby?