如果我有一个球列表,每个球都有颜色属性.我怎样才能干净地获得最常用颜色的球列表.
[m1,m2,m3,m4]
Run Code Online (Sandbox Code Playgroud)
说,
m1.color = blue
m2.color = blue
m3.color = red
m4.color = blue
Run Code Online (Sandbox Code Playgroud)
[m1,m2,m4] 是最常见颜色的球的列表
我的方法是:
[m1,m2,m3,m4].group_by{|ball| ball.color}.each do |samecolor|
my_items = samecolor.count
end
Run Code Online (Sandbox Code Playgroud)
其中count被定义为
class Array
def count
k =Hash.new(0)
self.each{|x|k[x]+=1}
k
end
end
Run Code Online (Sandbox Code Playgroud)
my_items将是一个相同颜色组的频率哈希值.我的实施可能是错误的,我觉得必须有一个更好,更聪明的方式.有什么想法吗?
你发现group_by但错过了max_by
max_color, max_balls = [m1,m2,m3,m4].group_by {|b| b.color}.max_by {|color, balls| balls.length}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6386 次 |
| 最近记录: |