如何在Elixir中从由两个元素组成的列表创建地图。

77

如何将类似[{1,2},{3,4}]这样的两个元素的列表优雅地转换为映射%{1=>2, 3=>4}

使用关键字列表将很容易,但如果我们有任意键怎么办?

3个回答

133

最简单的方法是:

Enum.into(list, %{})

2
这篇答案是在 Map.new/1 被创建之前写的,但是 Map.new 是最简单的方法(参见 Denis 的答案)。 - Adam Millerchip

30

Map 模块还支持将此类列表作为 new 函数的参数:

iex> Map.new([{1, 2}, {3, 4}])
%{1 => 2, 3 => 4}

4
我刚刚明白了:
list = [{1,2},{3,4}]
themap = for e <- list, into: %{}, do: e

13
一种更简单的方法是:Enum.into(list, %{}) - bitwalker
@bitwalker:如果您将其发布为答案,我会接受它。 - siddhadev
有趣的是,我认为这个版本编译出来的东西和被接受的答案一样。只不过不够简洁。 - whitfin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接