ruby - 在数组中查找最常见的字符串

标签 ruby string arrays

例如,我有这个数组(大小可变):

   x = ["1.111", "1.122", "1.250", "1.111"]

我需要找到最常见的值(在本例中为 “1.111”)。

有没有简单的方法可以做到这一点?

提前致谢!


编辑#1:谢谢大家的回答!


编辑#2:我已经根据 Z.E.D. 的信息更改了我接受的答案。再次感谢大家!

最佳答案

ruby < 2.2

#!/usr/bin/ruby1.8

def most_common_value(a)
  a.group_by do |e|
    e
  end.values.max_by(&:size).first
end

x = ["1.111", "1.122", "1.250", "1.111"]
p most_common_value(x)    # => "1.111"

注意:Enumerable.max_by 是 Ruby 1.9 的新增功能,但它已被移植到 1.8.7

ruby >= 2.2

Ruby 2.2 引入了 Object#itself方法,通过它我们可以使代码更简洁:

def most_common_value(a)
  a.group_by(&:itself).values.max_by(&:size).first
end

作为猴子补丁

或者作为Enumerable#mode:

Enumerable.class_eval do
  def mode
    group_by do |e|
      e
    end.values.max_by(&:size).first
  end
end

["1.111", "1.122", "1.250", "1.111"].mode
# => "1.111"

关于ruby - 在数组中查找最常见的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2562256/

相关文章:

ruby - 在没有确认提示的情况下通过 RVM 安装 Ruby

ruby - 将单级 JSON 邻接列表转换为嵌套的 JSON 树

javascript - 字符串拆分为 2 个数组

从 C 中的字符串指针数组创建二维数组

python - 如何创建任意长度字符串的numpy数组?

javascript - 谁能向我解释为什么这个 JavaScript Promise "pipeline"不保留我插入的数组......但起始索引却保留?

ruby - 如何使用 ruby​​zip 解压缩压缩文件夹

ruby-on-rails - ActionView::MissingTemplate:缺少模板主页/索引 - Google 抓取工具

Java分割字符串正则表达式: Leading whitespace

JAVA:统计字符串上的每个单词,并统计单词上的每个字母