Array to Hash Ruby

arrays, hashmap, ruby

Solution

a = ["item 1", "item 2", "item 3", "item 4"]
h = Hash[*a] # => { "item 1" => "item 2", "item 3" => "item 4" }

That's it. The `*` is called the splat operator.

One caveat per @Mike Lewis (in the comments): "Be very careful with this. Ruby expands splats on the stack. If you do this with a large dataset, expect to blow out your stack."

So, for most general use cases this method is great, but use a different method if you want to do the conversion on lots of data. For example, @Łukasz Niemier (also in the comments) offers this method for large data sets:

h = Hash[a.each_slice(2).to_a]

Problem

Convert this Array: ``` a = ["item 1", "item 2", "item 3", "item 4"] ``` ...to a Hash: ``` { "item 1" => "item 2", "item 3" => "item 4" } ``` i.e. elements at even indexes are keys and odd ones are values.

Original source

Related problems