2015-12-31 17 views
5

Tôi đang cố gắng tìm ra cách tốt nhất để kết hợp hai danh sách có cùng kích thước vào bản đồ các cặp giá trị khóa.Chuyển đổi hai danh sách có cùng kích thước thành cặp khóa giá trị trong elixir

Tôi đã sử dụng cùng chức năng để xử lý trường hợp này trong một thời gian cho CSV và truy vấn SQL thô trả về một số loại danh sách tiêu đề cùng với danh sách hàng.

Đây là chức năng Tôi đã sử dụng

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

Ví dụ:

# 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 

Có một hàm trong elixir/erlang mà sẽ làm việc này cho tôi hay là sự kết hợp trên của zip/vào cách tốt nhất để làm điều đó?

+2

Giải pháp của bạn là tốt. Nó là một cách tiếp cận khá phổ biến trong hầu hết các ngôn ngữ. http://rosettacode.org/wiki/Hash_from_two_arrays#Elixir – Gazler

Trả lời

12

Sau khi thảo luận với một vài người, phương pháp tôi đang sử dụng là cách tốt nhất để thực hiện ánh xạ danh sách các khóa đến danh sách giá trị.

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

Tôi đã có một câu hỏi tương tự và tôi đã hỏi nó trên elixir-lang slack group và nhận được câu trả lời chính xác như cách tiếp cận của bạn.

Những gì bạn đã sử dụng là một giải pháp tốt. Bây giờ bạn phải tuân theo nó.

Các vấn đề liên quan