From: "David A. Black" Date: 2005-12-02T23:34:53+09:00 Subject: Re: ruby one-liner needed Hi -- On Fri, 2 Dec 2005, Kev Jackson wrote: > Here's one taht I know is possible (I'm sure I've seen it somewhere before) > > I have 2 arrays and I'd like to change them into a Hash > stuff = ["1", "2", "3"] > Item.column_names.each { |column_name| new_item[column_name] = stuff[?] } > > The problem is how to index within the block to move along the stuff array, > and how to deal with the fact that most of the time the stuff array is > shorter than the column_names array > > I'm sure using collect, map of something else ruby-ish that this is more than > possible, but I can't find a solution right now a = [1,2,3] b = [4,5,6,7,8] Hash[*a.zip(b[0,a.size]).flatten => {1=>4, 2=>5, 3=>6} The problem with flatten is that it can be overzealous, but it looks like you probably don't have nested arrays. If you do, you can get the flattenx package from RAA and use flatten_once. David -- David A. Black dblack@wobblini.net "Ruby for Rails", forthcoming from Manning Publications, April 2006!