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"}
こんなかんじでした。