原です。

|  i.each{|x|a[x] = b.unshift}   # ただしbは空になる

|  k.each{|x|h[x] = v.unshift}   # ただしvは空になる

1.1 なら、

  i.each_with_index{|x,j|a[x] = b[j]}
  k.each_with_index{|x,j|h[x] = v[j]}

でしょ?