gpt4 book ai didi

mysql - 计算 ruby​​ 数组中的重复项并存储在哈希中

转载 作者:行者123 更新时间:2023-11-29 23:57:09 25 4
gpt4 key购买 nike

我有一个来自这样的 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 的 View ,并希望结果为

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

关于mysql - 计算 ruby​​ 数组中的重复项并存储在哈希中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25267473/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com