In article <20031205141744.GA18597 / mulan.thereeds.org>, Mark J. Reed <markjreed / mail.com> wrote: : On Fri, Dec 05, 2003 at 11:03:07PM +0900, Austin Ziegler wrote: : > What you can do is: : > : > hash = nil; keys.zip(value) { |k, v| (hash ||= {})[k] = v } : : Now that is handy. I assume there's a historical reason for the : name 'zip'? Because I would never have thought it meant : "iterate in parallel with". :) That's not quite what zip does. The reason it's called "zip" is that it's stolen directly from Python, which has a function by that name which does just that. It takes corresponding elements from two arrays and groups them together: irb(main):001:0> [1,2,3,4].zip([5,6,7,8]) => [[1, 5], [2, 6], [3, 7], [4, 8]] Another thing you could use would be "transpose", which is a more-general method to do similar things: irb(main):002:0> [[1,2,3,4],[5,6,7,8]].transpose => [[1, 5], [2, 6], [3, 7], [4, 8]] --Dave