首页 > 解决方案 > 如何在 Erlang 中比较两个映射的值。[我的解决方案没有返回任何值]

问题描述

compare(M1, M2) -> 
    Map1 = maps:from_list(M1)
    Map2 = maps:from_list(M2)
    Keys1 = maps:keys(Map1)
    lists:foreach(fun(I) -> 
                  V1 = maps:get(I, Map1)
                  V2 = maps:get(I, Map2)
                  if V1 < V2 -> true;
                  true -> false end
                  end, Keys1).

这是我的方法。但我的输出总是没问题。我在这里想念什么?条件:两个地图中的键相同。例如,这就是我将如何执行

compare([{p1, 1},{p2, 3}], [{p1, 4}, {p2, 5}]

标签: functional-programmingerlang

解决方案


您也可以尝试使用列表推导(如果您想比较列表而不是地图)

List1 = [{p1, 1},{p2, 3}],
List2 = [{p1, 4}, {p2, 5}],

Result = [Val < Val2 || {Key, Val} <- List1, {Key2, Val2} <- List2].

结果将是:

[true,true,true,true]

推荐阅读