group_by
メソッドはこれによく使用されます。
a.group_by{ |i| 私 }
{
"a" => [
[0]「あ」
]、
"d" => [
[0]「だ」
]、
"c" => [
[0] "c"、
[1]「c」、
[2]「ハ」
]、
"b" => [
[0] "b",
[1]「ロ」
]
}
好き:
a.group_by{ |i| i }.each_with_object({}) { |(k,v), h| h[k] = v.size}
{
"a" => 1,
"d" => 1,
"c" => 3,
"b" => 2
}
または:
Hash[a.group_by{ |i| i }.map{ |k,v| [k、v.size] }]
{
"a" => 1,
"d" => 1,
"c" => 3,
"b" => 2
}
それらの1つがあなたのかゆみを掻くかもしれません。そこから、小さなテストを使用して結果を減らすことができます。
Hash[a.group_by{ |i| i }.map{ |k,v| v.size > 1 && [k, v.size] }]
{
"c" => 3,
"b" => 2
}
情報を印刷するだけの場合は、次を使用します。
puts a.group_by{ |i| i }.map{ |k,v| "#{k}: #{v.size}" }
あ:1
日:1
c:3
ロ:2