将两个相同大小的列表转换为elixir中的键值对

时间:2015-12-31 15:31:50

标签: elixir keyvaluepair

我正在试图找出将两个相同大小的列表组合到键值对映射中的最佳方法。

我一直在使用相同的函数处理这种情况一段时间用于CSV和原始SQL查询,这些查询返回某种标题列表以及行列表。

这是我一直在使用的功能

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

例如:

# 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

elixir / erlang中是否有一个函数可以为我执行此操作,还是zip /上面的组合是最好的方法吗?

2 个答案:

答案 0 :(得分:14)

在与少数人讨论后,我使用的方法是完成将键列表映射到值列表的最佳方法。

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

答案 1 :(得分:4)

我有一个类似的问题,我在elixir-lang slack group问了一下,得到了一个与你的方法完全一样的答案。

你使用的是一个很好的解决方案。现在你必须坚持下去。