[英]counting duplicates in ruby array and storing in hash
我有一个来自这样的mysql查询的数组
section, views
aa, 2
aa, 100
bb, 2
bb, 3
bb, 100
我正在使用此代码对其进行排序
b = Hash.new(0)
array.each do |row|
....
....
b[section] += 1
end
目前为我提供了b[2]
的结果哈希
aa,2
bb,3
现在我想让mysql查询为小于和大于50的视图过滤视图,并希望结果为
section,small,large
aa,1,1
bb,2,1
我该如何实施? 还是这样做会更容易:
aa_small,1
aa_large,1
bb_small,2
bb_large,1
即将它们保留为单独的哈希?
如果我做对了,您需要以下内容:
views =
[['aa', 2],
['aa', 100],
['bb', 2],
['bb', 3],
['bb', 100]]
views
.group_by(&:first)
.map { |v, vs| [v, vs.partition { |_, x| x < 50 }
.map(&:length)] }
# => [["aa", [1, 1]], ["bb", [2, 1]]]
或者如果您想要哈希:
Hash[views
.group_by(&:first)
.map { |v, vs| [v, vs.partition { |_, x| x < 50 }
.map(&:length)] }]
# => {"aa"=>[1, 1], "bb"=>[2, 1]}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.