2010-07-29 11 views

Respuesta

173
h = Hash[a.zip b] # => {:baz=>1, :bof=>2, :bar=>"world", :foo=>"hello"} 

... maldición, me encanta Ruby.

+2

Es bastante obvio, pero si alguien se pregunta, si quiere obtener las matrices originales del nuevo hash, simplemente puede llamar a 'h.keys' y' h .values'. – bhaity

27

Sólo quería señalar que hay una manera un poco más limpio de hacer esto:

h = a.zip(b).to_h # => {:foo=>"hello", :bar=>"world", :baz=>1, :bof=>2} 

que estar de acuerdo en la parte "Me encanta Ruby" sin embargo!

+1

Esto funciona en ruby ​​2.0 y superior – Matilda

13

¿Qué tal este?

[a, b].transpose.to_h 

Si utiliza Ruby 1.9:

Hash[ [a, b].transpose ] 

me siento a.zip(b) parece a es amo y esclavo es b, pero en este estilo son planas.

+0

Me gusta este. –

+0

Esto es más fácil de entender – bhaity