迭代映射并更新elixir中的值?

迭代映射并更新elixir中的值?,elixir,Elixir,我有一个映射/结构数据: %{foo: "102", zoo: "103", bar: "104"} 我想迭代映射并将值更新为整数,我应该怎么做 result = %{foo: 102, zoo: 103, bar: 104} 干杯说您的地图被定义为“我的地图”: Enum.into(Enum.map(my_map, fn ({key, value}) -> {key, String.to_integer(value)} end), %{}) 这将迭代映射,将其值重新映射为整数,然后

我有一个映射/结构数据:

%{foo: "102", zoo: "103", bar: "104"}
我想迭代映射并将值更新为整数,我应该怎么做

result = %{foo: 102, zoo: 103, bar: 104}

干杯

说您的地图被定义为“我的地图”:

Enum.into(Enum.map(my_map, fn ({key, value}) -> {key, String.to_integer(value)} end), %{})
这将迭代映射,将其值重新映射为整数,然后将生成的元组列表转换为正确的
映射。

请注意,这将返回一个新的
Map
,因为结构是不可变的。

假设您的Map被定义为
my\u Map

Enum.into(Enum.map(my_map, fn ({key, value}) -> {key, String.to_integer(value)} end), %{})
这将迭代映射,将其值重新映射为整数,然后将生成的元组列表转换为正确的
映射。
请注意,这将返回一个新的
映射
,因为结构是不可变的。

此外,对于列表理解:

{k,v}的

Map.put(acc,k,String.to_整数(v))
终止
)
#⇒ %{酒吧:104,餐厅:102,动物园:103}
此外,通过列表理解:

{k,v}的

Map.put(acc,k,String.to_整数(v))
终止
)
#⇒ %{酒吧:104,餐厅:102,动物园:103}

我们可以使用
Map.new
实现这一点。它更简单,而且是自描述性的

map = %{foo: "102", zoo: "103", bar: "104"}
Map.new(map, fn {key, value} -> {key, String.to_integer(value)} end)

# %{bar: 104, foo: 102, zoo: 103}

我们可以使用
Map.new
实现这一点。它更简单,而且是自描述性的

map = %{foo: "102", zoo: "103", bar: "104"}
Map.new(map, fn {key, value} -> {key, String.to_integer(value)} end)

# %{bar: 104, foo: 102, zoo: 103}

结果不是地图吗?很好的解决方案。谢谢。结果不是地图吗?很好的解决方案。谢谢。真的比我的房间整洁answer@MilanVelebit这不是整洁的问题;只要有可能,我更喜欢列表理解,因为它们提供了一种非常简单的过滤方法。这比我的answer@MilanVelebit这不是整洁的问题;只要有可能,我更喜欢列表理解,因为它们提供了一种非常简单的过滤方法。