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}]
答案 0 :(得分:0)
lists:foreach
忽略传递的函数返回的值。您可以在此处使用lists:all/2
,并从传递的函数中返回V1 < V2
。如果所有V1
都小于V2
,它将返回true
,否则返回false
:
lists:all(fun(I) ->
V1 = maps:get(I, Map1)
V2 = maps:get(I, Map2)
V1 < V2
end, Keys1).
答案 1 :(得分:0)
此外,您可以尝试使用列表推导(如果要比较列表而不是地图)
List1 = [{p1, 1},{p2, 3}],
List2 = [{p1, 4}, {p2, 5}],
Result = [Val < Val2 || {Key, Val} <- List1, {Key2, Val2} <- List2].
结果将是:
[true,true,true,true]