在数组中查找具有最多单词频率的项目

时间:2015-09-23 06:12:02

标签: ruby hash

我尝试在没有2密钥的情况下选择值"Ten"

most_count = %w(Five Ten Six Eleven Ten Six One)
word_frequency = Hash.new(0)
most_count.each {|word| word_frequency[word] += 1}
word_frequency.max_by { |k,v| v }
# => ["Ten", 2]

2 个答案:

答案 0 :(得分:1)

word_frequency.max_by { |k,v| v }.last

或者,有人可能会排序:

word_frequency.sort_by { |k,v| -v }

然后找到最大值:

word_frequency.sort_by { |k,v| -v }.max
#⇒ ["Ten", 2]
word_frequency.sort_by { |k,v| -v }.max.last
#⇒ 2

请注意,结果["Ten", 2]并非绝对正确,因为可能有许多具有相同计数的项目。最精确的解决方案将按值分组并对结果进行操作:

# ⇓⇓⇓ this will get all 2s  ⇓⇓⇓
word_frequency.group_by(&:last).to_a.last.first
#⇒ 2

答案 1 :(得分:1)

你可以做到

word_frequency.max_by { |k,v| v }.last