【问题标题】:Array Count of repeating variable with integer output in ruby [duplicate]ruby中具有整数输出的重复变量的数组计数[重复]
【发布时间】:2017-05-04 20:03:52
【问题描述】:

我是 ruby​​ 新手,这可能是一个简单的解决方案,但我似乎无法弄清楚如何输出数组中出现频率最高的次数。假设动物是一个字符串数组。编写一组 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 

【问题讨论】:

标签: arrays ruby variables count repeat


【解决方案1】:

所以按照问题的措辞,我们只关心字符串cat的出现次数:

array.count { |x| x == 'cat' }
=> 3

【讨论】:

  • 是的,只有频率出现的次数。谢谢你的回答!
【解决方案2】:
puts array.select{|e|e=='cat'}.count

在阅读了 cmets 之后,我添加了另一个应该满足额外要求的解决方案:

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}"}

【讨论】:

  • 太棒了!谢谢!如果我不一定知道“猫”这个词的存在怎么办。我将如何输出最多频率的数量?
  • 如果它不符合真实要求,您为什么选择它作为答案?
  • 严格来说,这个答案确实符合他的要求。随着他的评论,他扩大了要求:-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-02
  • 1970-01-01
  • 2021-09-29
  • 2019-05-21
  • 2013-08-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多