如何转换以下地图/列表?

时间:2017-01-25 22:52:33

标签: elixir

如何在Elixir中将[[1, "A"], [2, "B"]]转换为[1: "A", 2: "B"]

尝试过看模式匹配,理解,无法弄清楚。

谢谢!

3 个答案:

答案 0 :(得分:2)

如果要将整数作为键,最好使用地图。 此代码将返回您的地图,如%{1 => "A", 2 => "B"}

a = [[1, "A"], [2, "B"]]
for [k, v] <- a, do: {k, v}, into: %{}

答案 1 :(得分:1)

[[1, "A"], [2, "B"]]
|> Enum.map(&List.to_tuple/1)
|> Enum.into(%{})
#⇒ %{1 => "A", 2 => "B"}

请注意,[1: "A", 2: "B"]Elixir不是合法的结构。

[[1, "A"], [2, "B"]]
|> Enum.map(&List.to_tuple/1)
|> Enum.into(Keyword.new)
#⇒ [{1, "A"}, {2, "B"}]   

尽管它是如何输出的,但它是有效的Keyword列表:

Keyword.values [{1, "A"}, {2, "B"}]
#⇒ ["A", "B"]
Keyword.keys [{1, "A"}, {2, "B"}]
#⇒ [1, 2]

答案 2 :(得分:-2)

这是一种转换字符串的方法。

{{1}}

感谢https://github.com/JEG2