2015-12-31 8 views
5

Próbuję znaleźć najlepszy sposób na połączenie dwóch list o tym samym rozmiarze w mapę par wartości klucza.Konwertuj dwie listy o tym samym rozmiarze do pary wartości klucza w eliksiru

Używam tej samej funkcji do obsługi tej sprawy przez jakiś czas dla plików CSV i nieprzetworzonych zapytań SQL, które zwracają jakąś listę nagłówków wraz z listami wierszy.

Jest to funkcja Używam

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

Na przykład:

# 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 

Czy istnieje funkcja w eliksiru/Erlang, że zrobi to za mnie czy powyższa kombinacja zip/w najlepszy sposób to zrobić?

+2

Twoje rozwiązanie jest dobre. Jest to dość powszechne podejście w większości języków. http://rosettacode.org/wiki/Hash_from_two_arrays#Elixir – Gazler

Odpowiedz

12

Po rozmowach z kilkoma osobami metoda, z której korzystałem, jest najlepszym sposobem na wykonanie mapowania list kluczy na listy wartości.

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

Miałem podobne pytanie i poprosiłem o to na elixir-lang slack group i otrzymałem odpowiedź, która jest dokładnie taka, jak podejście.

To, czego użyłeś, jest dobrym rozwiązaniem. Teraz musisz się do niego przyłączyć.

Powiązane problemy