Ruby 同じキーを持つハッシュ同士を演算する

  • 作成日 2021.03.26
  • 更新日 2022.08.09
  • Ruby
Ruby 同じキーを持つハッシュ同士を演算する

Rubyで、mergeを使用して、同じキーを持つハッシュ同士を演算するサンプルコードを記述してます。rubyのバージョンは2.7.2を使用してます。

環境

  • OS windows10 pro 64bit
  • ruby 2.7.2p137

merge使い方

merageを使用すれば、ハッシュ同士を結合することが可能ですが同じキーを保つ場合は、以下の上書きされてしまいます。

h1 = {'key1' => 1, 'key2' => 2}
h2 = {'key1' => 3, 'key2' => 4}

p h1.merge(h2)
# {"key1"=>3, "key2"=>4}

これを、2つのkey1が持つ「1」と「3」を足した「4」をkey1とする場合のサンプルコードを記述してます。

h1 = {'key1' => 1, 'key2' => 2}
h2 = {'key1' => 3, 'key2' => 4}

p h1.merge(h2){|k, v1, v2| v1 + v2}
# {"key1"=>4, "key2"=>6}

p h1
# {"key1"=>1, "key2"=>2}

merge!にすると、元の値も変更されます。

h1 = {'key1' => 1, 'key2' => 2}
h2 = {'key1' => 3, 'key2' => 4}

p h1.merge!(h2){|k, v1, v2| v1 + v2}
# {"key1"=>4, "key2"=>6}

p h1
# {"key1"=>4, "key2"=>6}

文字列の結合も可能です。

h1 = {'key1' => '1', 'key2' => '2'}
h2 = {'key1' => '3', 'key2' => '4'}

p h1.merge(h2){|k, v1, v2| v1 + v2}
# {"key1"=>"13", "key2"=>"24"}