Techioz Blog

配列を、配列内の各一意の要素が配列内に出現する回数を反映するハッシュに変換するにはどうすればよいですか?

概要

配列が与えられた場合、そのキーが配列の一意の要素であり、その値が対応するキーが配列内に出現する回数であるハッシュを作成したいと考えています。

たとえば、配列が次のような場合

["americans", "oath", "oath", "generation", "americans"]

関連するハッシュは次のようになります

{ "americans"=>2, "oath"=>2, "generation"=>1 }

解決策

まさにそれを行う Enumerable#tally メソッドがあります。

["americans", "oath", "oath", "generation", "americans"].tally
#=> { "americans" => 2, "oath" => 2, "generation" => 1 }