在Elixir中,我有一个嵌套地图列表,每个地图都有相同的基本结构 - 例如:
nested_map_list = [
%{foo: %{test: "Hi"}},
%{bar: %{test: "Hello"}},
%{baz: %{test: "Hey"}}
]
因此,它们在上层各有一个不同的键,但在嵌套映射中有相同的键。有没有办法可以迭代这个列表,以便每次迭代访问嵌套映射,而不管上层的键?
为了说明我的意思,请考虑这个伪代码:
Enum.each(nested_map_list, fn(%{_key: nested_data}) -> IO.puts nested_data.test end)
> "Hi"
> "Hello"
> "Hey"
非常感谢!
答案 0 :(得分:1)
Enum.reduce
,Enum.each
和朋友可以对key=>value
对进行迭代,因此在这种情况下我可能会将其分为两个函数,一个迭代列表成员,和一个在地图上迭代的人。如果您想存储结果(通常需要),则需要减少而不是Enum.each
。
Enum.each(nested_map_list, fn(element) ->
Enum.each(element, fn({_k, value}) ->
IO.inspect(value[:test])
end)
end)
答案 1 :(得分:0)
噢,好吧,我刚刚整理出来的一种可能性 -
Enum.each(nested_map_list, fn(nested_data) ->
[{key, value}] = Map.to_list(nested_data)
IO.puts value.test
end)
打开任何更快的答案。