初心者・独学者向け|Rubyのハッシュ入門とよく使うメソッド

プログラミング言語でHashは必ず出てくる重要な処理です。
今回はプログラミング言語のRubyでのHash作成や新規作成 変更などの方法を解説します。
関連記事
Rubyの練習問題:ハッシュ編|初心者・独学者向け入門コンテンツ
そもそもHashとは
{Key=>値}のようにハッシュの中にKeyと値をペアをセットで格納する物をHashといいます。Hash.newや{}を使うと空ハッシュ生成され、その中に値を登録できます。またハッシュから値を取り出したり、値を追加したりする事も可能です
Hashで値を取り出す。
値を取り出すには[key]で取得します。 存在しないkeyを取得しようとするとnilが返ってきます。
Keyを設定するにはkeyを""をダブルクオートか''シングルクオートで囲います。
a = {"test"=>1,"1"=>2} => {"test"=>1, "1"=>2} a["1"] => 2 a["11"] => nill
また、Keyを設定するには:でも設定可能です。
a = {:test=>1,:1=>2} => {"test"=>1, "1"=>2} a["1"] => 2
またKeyと値のペアを=>ではなくシンボル(:)で設定する事も可能です。 ※値の取り出し方に=>で設定する場合と違いはありません
a = {tes:1,1:2} => {:tes=>1, :1=>2}
.keysでHashのkeyを取り出す
animals = { "像" => 2, "ライオン" => 5, "トラ" => 9 } => {"像"=>2, "ライオン"=>5, "トラ"=>9} animals.keys => ["像", "ライオン", "トラ"]
関連記事
paizaのスキルチェックの難易度|各ランクの特徴・ランクアップのコツを現役エンジニアが解説
.valuesでHashの値を取り出す
animals = { "像" => 2, "ライオン" => 5, "トラ" => 9 } => {"像"=>2, "ライオン"=>5, "トラ"=>9} animals.values => [2, 5, 9]
.lengthか.sizeでHashのKeyと値のペアの数を数える
animals = { "像" => 2, "ライオン" => 5, "トラ" => 9 } => {"像"=>2, "ライオン"=>5, "トラ"=>9} animals.size => 3 animals.length => 3
.storeか[]=でHashの値を追加する
hashへKeyと値を追加する場合は[]=かstoreメソッドを利用します。
[]=を利用する場合
price = { "みかん" => 150, "りんご" => 160, "もも" => 190} => {"みかん"=>150, "りんご"=>160, "もも"=>190} price["バナナ"] = 123 => 123 price["バナナ"] => 123
storeメソッドを利用する場合
price = { "みかん" => 150, "りんご" => 160, "もも" => 190} => {"みかん"=>150, "りんご"=>160, "もも"=>190} price.store("バナナ", 175) => 175 price["バナナ"] => 175
ちなみに既に存在するkeyに値を追加しようとすると 値が上書きされます。
price = { "みかん" => 150, "りんご" => 160, "もも" => 190} => {"みかん"=>150, "りんご"=>160, "もも"=>190} price["バナナ"] = 123 => 123 price["バナナ"] => 123 price["バナナ"] = 1231 => 1231 price["バナナ"] => 123
deleteメソッドでHashのKeyと値を追加する
deleteメソッドでkeyを指定するとkeyと値が削除されます。 keyが見つからないときはnilを返します。
price = { "みかん" => 150, "りんご" => 160, "もも" => 190} => {"みかん"=>150, "りんご"=>160, "もも"=>190} price.delete("みかん") => 150 price => {"りんご"=>160, "もも"=>190} price.delete("みかん") => nil
delete_ifで指定条件で複数のKeyと値を削除
delete_ifでは、指定条件を指定してKeyと値を一括で削除できます。 以下では値が170未満の値とkeyを削除します。
price = { "大根" => 50, "人参" => 160, "お肉" => 190} => {"大根"=>50, "人参"=>160, "お肉"=>190} price.delete_if {|key, val| val < 170 } => {"お肉"=>190} price => {"お肉"=>190}
selectメソッドで指定条件に合致するKeyと値を表示する
あくまで表示するだけなので、指定条件に合致したKeyと値が削除されるわけではありません。
以下では数字の3以上の値を表示する際の条件です。
man = { '田中' => 1, 'ヤマダ' => 2, '佐藤' => 3, '西村' => 4 } => {"田中"=>1, "ヤマダ"=>2, "佐藤"=>3, "西村"=>4} man.select {|k, v| v >= 3 } => {"佐藤"=>3, "西村"=>4} #再度変数manを表示しても1行目に設定されたKeyと値が表示される man => {"田中"=>1, "ヤマダ"=>2, "佐藤"=>3, "西村"=>4}
to_aメソッドでハッシュを配列化
.to_aメソッドを利用すれば、ハッシュのkeyと値が入った配列を2次元配列として返します。
man = { :ben => 170, :jhon => 190, :dan => 200} p man.to_a #実行結果 # [[:ben, 170], [:jhon, 190], [:dan, 200]]
to_hメソッドで2次元配列をハッシュ化する
to_hメソッドで2次元配列をハッシュ化します。
※Ruby 2.1.0からのメソッドとなります。
fruit =[["りんご", 200], ["マンゴー", 140], ["ぶどう", 200]] p fruit.to_h #実行結果 # {"りんご"=>200, "マンゴー"=>140, "ぶどう"=>200}
その他プログラミング言語では配列もよく利用されます。 Rubyの配列処理についての入門記事は下記になります。
関連記事
Rubyの練習問題:ハッシュ編|初心者・独学者向け入門コンテンツ
Rubyの練習問題:配列編|初心者・独学者向け入門コンテンツ
Rubyの練習問題:文字列編|初心者・独学者向け入門コンテンツ
初心者・独学者向け|Rubyの配列処理の入門とよく使うメソッド
初心者・独学者向け|RubyのStringクラスとよく使うメソッド
Ruby技術者認定試験 (Silver version 2.1)対策 | !が付かない破壊的メソッド
Rubyの資格試験|Ruby技術者認定試験 (Silver version 2.1)の解説と対策概要