_J Blog

学んだ事のまとめやメモなどが中心です

Rubyで2つの配列をハッシュに変換するワンライナー

最近、ちょっとRubyを書いていて使った、
2つの配列をそれぞれ対応するキーと値の
ハッシュに変換するときのやりかたをメモ。

hash = Hash[keys.zip vals]

もしくは

hash = Hash[*([keys, vals].transpose.flatten)]

です。

※2011/11/15追記
上の方はkeyesberryさんに教えていただいた方法です

コードもぐっと短くなってとてもすてきですね。


一応、以下に実験結果。

test.rb

#キーと値の配列をそれぞれ定義
keys = %w[ushi tori]
vals = %w[beef chicken]

#2つの配列をハッシュに変換する
hash = Hash[*([keys, vals].transpose.flatten)]
# ここは
# hash = Hash[keys.zip vals]
# とした方が短い!(同じ結果が得られます)

#出力してみる
p hash

実行してみる

ruby test.rb 
{"ushi"=>"beef", "tori"=>"chicken"}

こんなかんじでした。