ruby 中整数输出的重复变量数组计数
Array Count of repeating variable with integer output in ruby
我是 ruby 的新手,这可能是一个简单的解决方案,但我似乎无法弄清楚如何输出数组中出现频率最高的次数。假设 animals 是一个字符串数组。编写一组 Ruby 语句,报告输出单词“cat”在数组中出现了多少次。例如,如果数组 animals 的内容为 [“cat”、“dog”、“cat”、“cat”、“cow”],您的脚本应该写出数字 3。
这是我到目前为止所拥有的,它给了我 cat 的输出,但我只想显示它重复了多少次。谢谢!
array = [ "cat", "dog", "cat", "cat", "cow" ]
repeat_item = array.uniq.max_by{ |i| array.count( i ) }
puts repeat_item
puts array.select{|e|e=='cat'}.count
阅读评论后,我添加了另一个应该满足额外要求的解决方案:
array = [ "cat", "dog", "cat", "cat", "cow", "cow", "cow" ]
repeat_item = array.uniq.each_with_object({}){|x, result| result[x] = array.count(x) }
max_count = repeat_item.values.max
max_item = repeat_item.key(max_count)
puts "#{max_item}: #{max_count}"
我故意留下变量来说明方法。
请注意,如果某些条目具有相同的出现,它会产生第一个
另一种解决方案:一行但不是那么容易理解
puts array.group_by{|i| i }
.max_by{|i,v| v.count }
.instance_eval{|i| "#{i.first}: #{i.last.count}"}
所以按照题目的写法,我们只关心字符串出现的次数cat
:
array.count { |x| x == 'cat' }
=> 3
我是 ruby 的新手,这可能是一个简单的解决方案,但我似乎无法弄清楚如何输出数组中出现频率最高的次数。假设 animals 是一个字符串数组。编写一组 Ruby 语句,报告输出单词“cat”在数组中出现了多少次。例如,如果数组 animals 的内容为 [“cat”、“dog”、“cat”、“cat”、“cow”],您的脚本应该写出数字 3。 这是我到目前为止所拥有的,它给了我 cat 的输出,但我只想显示它重复了多少次。谢谢!
array = [ "cat", "dog", "cat", "cat", "cow" ]
repeat_item = array.uniq.max_by{ |i| array.count( i ) }
puts repeat_item
puts array.select{|e|e=='cat'}.count
阅读评论后,我添加了另一个应该满足额外要求的解决方案:
array = [ "cat", "dog", "cat", "cat", "cow", "cow", "cow" ]
repeat_item = array.uniq.each_with_object({}){|x, result| result[x] = array.count(x) }
max_count = repeat_item.values.max
max_item = repeat_item.key(max_count)
puts "#{max_item}: #{max_count}"
我故意留下变量来说明方法。 请注意,如果某些条目具有相同的出现,它会产生第一个
另一种解决方案:一行但不是那么容易理解
puts array.group_by{|i| i }
.max_by{|i,v| v.count }
.instance_eval{|i| "#{i.first}: #{i.last.count}"}
所以按照题目的写法,我们只关心字符串出现的次数cat
:
array.count { |x| x == 'cat' }
=> 3