按哈希中的数组元素分组,计算计数

Bri*_*313 1 ruby arrays hash group-by

我有一个Ruby哈希:

example = {
  :key1  => [1, 1, 4],
  :key2  => [1, 2, 3],
  :key3  => [1, 3, 2],
  :key4  => [1, 5, 0],
  :key5  => [1, 7, 2],
  :key6  => [2, 1, 5],
  :key7  => [2, 2, 4],
  :key8  => [2, 4, 2],
  :key9  => [3, 1, 6],
  :key10 => [3, 2, 5],
  :key11 => [3, 3, 4]
}
Run Code Online (Sandbox Code Playgroud)

如何通过值的数组中的第一个元素对哈希进行分组?分组后,如何计算每个组的数量并将其存储到其他哈希中?

group_by如果我能够提取计数,我愿意跳过这部分.

示例所需输出:

groups = {:group1 => 5, :group2 => 3, :group3 => 3}
Run Code Online (Sandbox Code Playgroud)

Aru*_*hit 5

这是一种使用方式each_with_object:

example.each_with_object(Hash.new(0)) { |(_, (v, *)), h|  h[:"group#{v}"] += 1 }
# => {:group1=>5, :group2=>3, :group3=>3}
Run Code Online (Sandbox Code Playgroud)