例如,我有这个数组(大小可变):
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/