概要
前回投稿した 2つの配列からHashを作る の応用編。
必要となる状況もほぼ同じ。
やり方
header = ["id", "name", "desc"]
data = Hash[*header.zip(Array.new(header.count){[]}).flatten(1)]
p data #=> {"id"=>[], "name"=>[], "desc"=>[]}
注意点
rubyのArray.newの引数に空の配列を与えても同じような結果になる。ただ、そうすると、その配列の要素は全て同一の要素をさすことになってしまうので注意。
ここに書いたようにブロックで与える必要あり。(コメントにリファレンスを乗せていただいたので、そちらをごらんください。)
補足
コメント欄に素晴らしい意見をいただいたので、そちらも参考に。