Makoto Taguchi Makoto Taguchi - 1 year ago 62
Ruby Question

Convert multidimensional array to Hash in Ruby

I have input something like this:

input = [['abc',['xyz','1.1']], ['abc',['xyz','1.2']],['def',['lmn','3.14']]]

And I want to convert this to


What's the best way to do this?

Answer Source

One more way to do it:

input.inject({}) { |a, (k, v)| a.merge(k => [Hash[*v]]) { |_, o, n| o + n } }

It was pointed out by Ilya that merge! should be preferred over merge since it has better performance characteristics.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download