获取列表的每个元素并将其映射到elixir中的结构

时间:2018-03-20 00:09:58

标签: elixir

您如何获取字符串列表,例如

["jeff", "bezos", "21"]

并将其映射到结构

%{:fistname => "jeff", :lastname => "bezos", :age => "21"}

是否可以使用Enum功能,或者您是否可以使用地图功能。我需要以指定格式使用此结构,以便我可以将其发送到数据库

2 个答案:

答案 0 :(得分:4)

我假设每次字符串都是相同的顺序?

然后你可以模式匹配:

[firstname, lastname, age] = array
%{:fistname => firstname, :lastname => lastname, :age => age}

如果列表包含3个以上的元素:

[firstname, lastname, age | _] = array
%{:fistname => firstname, :lastname => lastname, :age => age}

答案 1 :(得分:4)

您可以使用值列表压缩键列表,然后将其传递给Map.new/1

iex(1)> Enum.zip([:firstname, :lastname, :age], ["jeff", "bezos", "21"]) |> Map.new
%{age: "21", firstname: "jeff", lastname: "bezos"}