迭代映射并更新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这不是整洁的问题;只要有可能,我更喜欢列表理解,因为它们提供了一种非常简单的过滤方法。