2016-06-03 2 views
-2

Wie kann ich ein Array von Arrays in einen Hash konvertieren?Array von Array in Hash konvertieren

arr = [['me',1],['he',2],['she',3]] 

ich haben will

{'me':1,'he':2,'she':3} 

meine aktuellen Lösungen ist

hsh={} 
arr.each do |x| p hsh[x[0]] = x[1] end 
hsh # => {'me':1,'he':2,'she':3} 

aber es sieht hässlich. Mein Code funktioniert, aber ich suche nach einer bequemeren Möglichkeit, dies zu tun.

+1

Was sind die Werte von "ich", "er", "sie"? – sawa

+0

Haben Sie versucht, Ihren Code auszuführen? Welche Fehler haben Sie? – Anand

+0

@sawa ist nur eine Zeichenfolge – user

Antwort

1

Versuchen Sie, die to_h Methode

arr = [['me',1],['he',2],['she',3]] 
arr.to_h 
# => {'me' => 1, 'he' => 2, 'she' => 3} 

Beachten Sie, dass dies nicht die Original-Zeichenketten in Symbole verwandeln. Ich bin mir nicht sicher, ob das Teil Ihrer Frage ist. Wenn ja, müssen Sie mit Sawas Lösung gehen.

+0

Die Lösung funktioniert nicht Bitte überprüfen Sie das Array noch einmal und versuchen Sie diese Lösung. – Prity

+0

@Prity: Danke, ich habe den Code aus der Frage kopiert/eingefügt, die ein extra '' ''hatte. Ich habe den Tippfehler korrigiert. – mlovic

0
arr.map{|k, v| [k.to_sym, v]}.to_h 
0

Zunächst einmal denke ich, Ihr Array entweder das sein sollte:

arr = [['me',1],[['he',2],['she',3]]] 

ODER

arr = [['me',1],['he',2],['she',3]] 

Es gibt einige Probleme in der Anzahl der '[' und ']'

Eine Lösung, die für beide funktioniert, ist wie folgt:

hsh = Hash[*arr.flatten]