Ruby配列とハッシュの変換をやさしく解説!to_h・zip・assoc・rassoc完全入門
生徒
「Rubyの配列って、ハッシュに変えたりできますか?なんだか難しそうで…」
先生
「できますよ。配列とハッシュは形が違うだけで、変換の方法を知れば身近な存在になります。」
生徒
「パソコンをあまり触ったことがなくても理解できますか?」
先生
「大丈夫です。買い物メモや名簿の例えで、一つずつ確認していきましょう。」
1. 配列とハッシュの違いを超かんたんに理解しよう
Rubyの配列(Array)は、順番に並んだ箱の集まりです。番号札が付いたロッカーのようなもので、 一番目、二番目と位置で中身を取り出します。
一方でハッシュ(Hash)は、「名前」と「中身」がセットになった引き出しです。 名簿や辞書のように、「何がキーで、何が値か」がはっきりしています。
プログラミングでは、データを扱いやすくするために、配列からハッシュへ、またはその逆へ 変換する場面がよくあります。ここで登場するのがto_hやzip、 assoc、rassocです。
2. to_hで配列をハッシュに変換する基本
to_hは、配列をハッシュに変換するための命令です。
ただし、使うには「二つセットの配列」が必要になります。
例えば「商品名」と「値段」がペアになっているイメージです。
items = [["りんご", 100], ["みかん", 80]]
hash = items.to_h
p hash
{"りんご"=>100, "みかん"=>80}
このように、配列の中身が「キー」と「値」に分かれて、ハッシュに変換されます。 データを整理したいときによく使われる基本ワザです。
3. zipで二つの配列を合体させる
zipは、二つの配列を横に並べてセットにする命令です。
名簿で言えば、「名前の一覧」と「年齢の一覧」を合体させる感覚です。
names = ["太郎", "花子"]
ages = [20, 18]
pairs = names.zip(ages)
p pairs
[["太郎", 20], ["花子", 18]]
この結果にto_hを使えば、そのままハッシュに変換できます。
配列と配列からハッシュを作りたいときの定番の流れです。
4. assocとrassocで特定のデータを探す
assocとrassocは、少し変わった命令ですが、
「ペアの配列」から条件に合うものを探すために使います。
assocは左側、rassocは右側を見る、と覚えると簡単です。
data = [["太郎", 20], ["花子", 18]]
p data.assoc("太郎")
p data.rassoc(18)
["太郎", 20]
["花子", 18]
名前から年齢を探したり、年齢から名前を逆に探したりできます。 データが増えてきたときに役立つ便利な検索方法です。
5. 配列とハッシュを変換できると何がうれしい?
Rubyで配列とハッシュの変換を覚えると、データの整理や検索がとても楽になります。 プログラミングでは「形を変える」ことで、処理が一気に簡単になることが多いです。
最初は難しく感じますが、買い物リストや名簿の例で考えると、 配列とハッシュは日常生活に近い存在だと分かります。
to_h、zip、assoc、rassocは、Rubyの配列操作の中でも よく使われる基本セットなので、ぜひ手を動かしながら慣れていきましょう。