95 votes

Comment construire un hash Ruby à partir de deux tableaux de taille égale ?

J'ai deux tableaux

a = [:foo, :bar, :baz, :bof]

et

b = ["hello", "world", 1, 2]

Je veux

{:foo => "hello", :bar => "world", :baz => 1, :bof => 2}

Y a-t-il un moyen de le faire ?

218voto

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

...bon sang, j'aime Ruby.

44voto

Lethjakman Points 355

Je voulais juste signaler qu'il y a une façon un peu plus propre de faire ça :

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

Je suis d'accord sur la partie "J'aime Ruby" !

17voto

Junichi Ito Points 528

Et celui-là ?

[a, b].transpose.to_h

Si vous utilisez Ruby 1.9 :

Hash[ [a, b].transpose ]

Je sens a.zip(b) ressemble à a est maître et b est un esclave, mais dans ce style, ils sont plats.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X