alist to hash

何かそれっぽいことはHash.[]で出来るらしいっす。

h = Hash[*alist.flatten]

ちゃんとしたalistならこれで十分。
引数の数が合わないと例外になってくれるからいいのかね。

いちおう、[...[key, value]...]でないalistでも変換できるようにするには、

h = Hash[*alist.map{|e| k, v, = e ; [k, v] }.flatten]

でいいかな。Ruby1.8系までだとStringがEnumerableだからちょっとアレか。

こんな変換を許さないで、きちんとしたalistを用意した上でなら前者のほうがいいなあ。