0, "November 2021" => 0,-6ren">
gpt4 book ai didi

hashmap - 使用来自另一个 map (Elixir) 的值更新 map 中的所有值

转载 作者:行者123 更新时间:2023-12-05 09:29:40 24 4
gpt4 key购买 nike

如何使用来自另一个 map 的相应键的值更新 map 中的所有值?例如,我有以下两张 map :

map = %{"December 2021" => 0, "November 2021" => 0, "October 2021" => 0}
map_2 = %{"December 2021" => 7, "November 2021" => 6}

我想用 map_2 中的相应值更新 map 中的所有值,所以最后 map = %{"December 2021"=> 7, "November 2021"=> 6, "October 2021"=> 0

我试过:

Enum.map(map_2, fn {key, value} -> %{map | k => v} end)

我也尝试过将上面的代码与其他函数(如 Map.update!/3 和类似函数)结合使用,但它们都会为 Enum.map 的每次迭代返回一个包含 map 的列表。

有人知道怎么做吗?

提前致谢

最佳答案

我想你在找Enum.reduce/3 .这里的reduce是指将一个集合缩减为一个值。此处要归约的集合是 map_2。您开始使用的初始/单个值是原始集合 map。输出是对初始值的修改。

在此示例中,map_2 的每个键/值都被传递给一个函数,该函数还需要一个累加器 accacc 使用初始值 map(Enum.reduce 的第二个参数)进行初始化。在这种情况下,map_2 的每个值都添加到 map:

map = %{"December 2021" => 0, "November 2021" => 0, "October 2021" => 0}
map_2 = %{"December 2021" => 7, "November 2021" => 6}

Enum.reduce(map_2, map, fn {key, value}, acc ->
Map.put(acc, key, value)
end)

#> %{"December 2021" => 7, "November 2021" => 6, "October 2021" => 0}

如果您想要不同的行为,例如,不要使用 map 中不存在的键从 map_2 添加值:尝试更改 reducer 函数。

关于hashmap - 使用来自另一个 map (Elixir) 的值更新 map 中的所有值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70536892/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com