ハッシュでキーを指定して要素を削除する

Hash クラスのオブジェクトの中でキーを指定して要素を削除することができます。ここでは Ruby でハッシュオブジェクトからキーを指定して要素を削除する方法について解説します。

(Last modified: )

ハッシュオブジェクトから要素を削除する

Hash クラスのオブジェクトから要素を削除する方法です。 Hash クラスで用意されている delete メソッドを使います。

Hashオブジェクト.delete(key)

引数に指定したキーに対応する値をハッシュ自身から削除します。

例えば次のように記述します。

h = {"suzuki" => 87, "itou" => 76, "yamada" => 69}
h.delete("itou")

この場合、キーが "itou" である 76 と言う値が(キーと一緒に)ハッシュから削除します。

また指定したキーがハッシュに存在しなかった場合の処理を記述するブロック付きのメソッドも利用できます。

Hashオブジェクト.delete(key) {|key| ... }

引数;
  key  削除したい値に対応するキー
戻り値:
  取り除かれた値。キーが存在しなかった場合はブロック内を実行した結果

ハッシュからキーに対応する値を取り除く点は同じですが、キーがハッシュ内に存在しなかった場合にはブロック内を実行した結果を返します。例えば次のように記述します。

h = {"suzuki" => 87, "itou" => 76, "yamada" => 69}

h.delete("kudou"){|key|
  print("#{key} は存在しません\n")
}

この場合キー "kudou" はハッシュ内に存在しませんのでブロック内が実行されます。

サンプルコード

では簡単なサンプルで試してみます。

# encoding: UTF-8

h = {"suzuki" => 87, "itou" => 76, "yamada" => 69}
p(h)

puts()

puts("キー:itouを削除します")
h.delete("itou")
p(h)

puts()

puts("キー:kudouを削除します")
h.delete("kudou"){|key|
  puts("#{key} は存在しません")
}
p(h)

実行結果は次のようになります。

ハッシュからキーと値を取り除く

-- --

Ruby でハッシュオブジェクトからキーを指定して要素を削除する方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。