2015-12-31 2 views
5

Ich versuche herauszufinden, die beste Möglichkeit, zwei Listen der gleichen Größe in eine Karte der Schlüssel-Wert-Paare zu kombinieren.Konvertieren Sie zwei Listen der gleichen Größe in Schlüssel-Wert-Paar in Elixir

Ich habe die gleiche Funktion verwendet, um diesen Fall für eine Weile für CSVs und Raw SQL-Abfragen zu behandeln, die eine Art Header-Liste zusammen mit Zeilenlisten zurückgeben.

Dies ist die Funktion Ich habe

benutze
Enum.zip(list1, list2) |> Enum.into(%{}) 

Zum Beispiel:

# For CSVS 
header = ["column1","column2","column3"] 
rows = [["a","b","c"],["d","e","f"]] 
Enum.each rows, fn(row) ->                                            
    # Map the header to each row field                                          
    row = Enum.zip(header, row) |> Enum.into(%{}) 
    # Do some processing with the row 
    IO.inspect row                                    
end 

Gibt es Elixier/erlang eine Funktion in der dies für mich tun oder ist die obige Kombination von Zip/in den besten Weg, es zu tun?

+2

Ihre Lösung ist gut. In den meisten Sprachen ist dies ein ziemlich üblicher Ansatz. http://rosettacode.org/wiki/Hash_from_two_arrays#Elixir – Gazler

Antwort

12

Nach der Diskussion mit ein paar Leuten ist die Methode, die ich verwendete, der beste Weg, Mapping-Listen von Schlüsseln zu Wertelisten zu erreichen.

Enum.zip(list1, list2) |> Enum.into(%{}) 
4

Ich hatte eine ähnliche Frage und ich fragte es auf elixir-lang slack group und bekam eine Antwort, die genau wie Ihre Vorgehensweise ist.

Was Sie verwendet haben, ist eine gute Lösung. Für jetzt müssen Sie sich daran halten.

Verwandte Themen