[Ruby]ハッシュ(Hash)の値の重複を削除するには?

Ruby

どうも、ちょげ(@chogetarou)です。

ハッシュ(Hash)の値(value)の重複を削除する方法を紹介します。

スポンサーリンク

方法

インターフェース, インターネット, プログラム, ブラウザ, Www

ハッシュ(Hash)の値(value)の重複を削除するには、uniqメソッドを使います。

まず、ハッシュからto_aメソッド、to_aメソッドからuniqメソッドを呼び出します。

uniqメソッドに、第2引数を返すブロックを渡します。

そして、uniqメソッドからto_hメソッドを呼び出します。

#hash=対象のハッシュ
result = hash.to_a
             .uniq { |_, v| v }
             .to_h

上記のto_hメソッドは、対象のハッシュ(Hash)の値(value)の重複を削除します。

使用例

numbers = { 
    "one" => 1, 
    "いち" => 1, 
    "一" => 1, 
    "two" => 2,
    "three" => 3,
    "さん" => 3,
    "four" => 4,
    "よん" => 4,
    "five" => 5,
}

result = numbers.to_a
                .uniq { |_, v| v }
                .to_h

puts result
出力:
{"one"=>1, "two"=>2, "three"=>3, "four"=>4, "five"=>5}

コメント

タイトルとURLをコピーしました