gpt4 book ai didi

erlang - 如何通过 Erlang 映射列表的键来汇总值?

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

这是我的 map 列表的样子:

Map = [#{votes=>3, likes=>20, views=> 100},#{votes=>0, likes=>1, views=> 70},#{votes=>1, likes=>14, views=> 2000}].

我想返回所有 map 条目的摘要。我试图用 fun() 解决这个问题,但逻辑没有意义,而且我只得到不可执行的代码。

问题是不能在 Erlang 中更改变量,否则这会起作用:

Summary = #{
votes=>0,
likes=>0,
views=>0,
},
[maps:update(Key, maps:get(Key, MapItem) + maps:get(Key, Summary), Summary) || MapItem <- Map, Key <- [votes, likes, views]].

应该如何处理并成功总结 map 列表的值?

最佳答案

fold 系列的函数就是为这种情况而设计的。在您的情况下,以下代码计算包含列表中 map 条目总数的 map :

MapsList = [#{votes=>3, likes=>20, views=> 100},
#{votes=>0, likes=>1, views=> 70},
#{votes=>1, likes=>14, views=> 2000}],
Summary = lists:foldl(fun (Map, AccL) ->
maps:fold(fun (Key, Value, Acc) ->
Acc#{Key => Value + maps:get(Key, Acc, 0)}
end, AccL, Map)
end, #{}, MapsList)

Summary 值是 map #{votes => 4, likes => 35, views => 2170}

关于erlang - 如何通过 Erlang 映射列表的键来汇总值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50320979/

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