私は配列を持っています: keys=[["a","a","b"],["a","b","c"]] "a","b の回数を見つける必要があります","c" は、「keys」の各サブ配列で発生します。
出力はハッシュになる可能性があります: ["a"=> [2,1],"b"=>[1,1],"c"=>[0,1]]
私は配列を持っています: keys=[["a","a","b"],["a","b","c"]] "a","b の回数を見つける必要があります","c" は、「keys」の各サブ配列で発生します。
出力はハッシュになる可能性があります: ["a"=> [2,1],"b"=>[1,1],"c"=>[0,1]]
おそらく最速ではありませんが、おそらく最短の1つです。
Hash[
keys.flatten.uniq.map{|e|
[e, keys.map{|ar| ar.count(e)}]
}
]
=> {"a"=>[2, 1], "b"=>[1, 1], "c"=>[0, 1]}
また
keys.flatten.uniq.inject({}){|acc,e|
acc.merge({e => keys.map{|ar| ar.count(e)}})
}
これが1.8.6バージョンのショットです。
keys.flatten.uniq.inject({}){|acc,e|
acc[e] = keys.map{|ar|
ar.select{|c| c==e}.size
}
acc
}
しかし、あなたはすぐにそのバックポートの宝石を手に入れたほうがいいです...;)