Ho due arrayCome costruire un hash rubino su due matrici di uguali dimensioni?
a = [:foo, :bar, :baz, :bof]
e
b = ["hello", "world", 1, 2]
voglio
{:foo => "hello", :bar => "world", :baz => 1, :bof => 2}
un modo per fare questo?
Ho due arrayCome costruire un hash rubino su due matrici di uguali dimensioni?
a = [:foo, :bar, :baz, :bof]
e
b = ["hello", "world", 1, 2]
voglio
{:foo => "hello", :bar => "world", :baz => 1, :bof => 2}
un modo per fare questo?
h = Hash[a.zip b] # => {:baz=>1, :bof=>2, :bar=>"world", :foo=>"hello"}
... accidenti, adoro Ruby.
È 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
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ò!
Funziona su Ruby 2.0 e successive – Matilda
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.
Mi piace questo. –
Questo è più facile da capire – bhaity
Si prega di contrassegnare la mia risposta come accettata se funziona per voi :) – jtbandes