Подтвердить что ты не робот

Как сортировать хеш по значению в порядке убывания и выводить хэш в рубине?

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
4b9b3361

Ответ 1

Try:

Hash[h.sort.reverse]

Это должно вернуть то, что вы хотите.

Edit:

Сделать это по значению:

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

Ответ 2

Попробуйте следующее:

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