循环遍历Map的键值对

时间:2016-10-08 22:19:28

标签: elixir

如何在Elixir中迭代地图的键值对?

这不起作用:

my_map = %{a: 1, b: 2, c: 3}

Enum.each my_map, fn %{k => v} ->
    IO.puts "#{k} --> #{v}"
end

1 个答案:

答案 0 :(得分:31)

原来你在Map上迭代Keyword List,就像在tuple上一样(即你使用Enum.each %{a: 1, b: 2, c: 3}, fn {k, v} -> IO.puts "#{k} --> #{v}" end ):

for  {k, v}  <-  %{a: 1, b: 2, c: 3}  do
  IO.puts "#{k} --> #{v}"
end

Comprehensions也有效:

{{1}}

注意:如果您使用Enum.map/2并返回元组,则最终会使用关键字列表而不是地图。要将其转换为地图,请使用Enum.into/2