2010-07-29 8 views

risposta

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

... accidenti, adoro Ruby.

+2

È abbastanza ovvio, ma se qualcuno si chiede, se si desidera ottenere gli array originali dal nuovo hash si può semplicemente chiamare 'h.keys' e' h .values'. – bhaity

27

Volevo solo far notare che c'è un modo un po 'più pulito di fare questo:

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

devono accordarsi sulla parte "I love Ruby" però!

+1

Funziona su Ruby 2.0 e successive – Matilda

13

Che ne dici di questo?

[a, b].transpose.to_h 

Se si utilizza Ruby 1.9:

Hash[ [a, b].transpose ] 

mi sento a.zip(b) sembra a è padrone e b è schiavo, ma in questo stile sono piatte.

+0

Mi piace questo. –

+0

Questo è più facile da capire – bhaity