kei-p3’s blog

kei-pによる技術共有と思考整理

CSVのような二次元配列からHashの配列を生成

csvをパースしたときのように1行目にキー情報があり、
2行目以降に各レコード情報が複数あるようなデータをハッシュに置き換える方法です。

lines = [["num", "char", "hira", "char2"], [1, "a", "あ", "aa"], [2, "b", "い", "bb"], [3, "c", "う", "cc"]]

keys = lines[0]

datas = lines[1...-1].map { |line| Hash[keys.zip(line)] }  
## => [{"num"=>1, "char"=>"a", "hira"=>"あ", "char2"=>"aa"}, {"num"=>2, "char"=>"b", "hira"=>"い", "char2"=>"bb"}]