以下是一个比较两个映射列表并返回一个新的转换列表的示例代码:
defmodule MapComparison do
def compare_maps(list1, list2) do
Enum.map(list1, fn {key, value} ->
case Map.has_key?(list2, key) do
true -> {key, Map.get(list2, key)}
false -> {key, value}
end
end)
end
end
list1 = [%{name: "Alice", age: 25}, %{name: "Bob", age: 30}]
list2 = [%{name: "Alice", age: 26}, %{name: "Charlie", age: 35}]
result = MapComparison.compare_maps(list1, list2)
IO.inspect(result)
在上面的代码中,我们定义了一个 MapComparison
模块,其中有一个 compare_maps
函数。该函数接受两个映射列表 list1
和 list2
作为参数,并使用 Enum.map
遍历 list1
中的每个映射。
在每次迭代中,我们使用 Map.has_key?
函数检查 list2
是否包含与当前映射的键相同的键。如果是,则返回 list2
中对应键的值;否则,返回当前映射的原始值。最终,我们得到一个新的转换列表,并将其打印输出。
在上面的示例中,result
的输出将是 [%{age: 26, name: "Alice"}, %{age: 30, name: "Bob"}]
。这是因为 list1
中的第一个映射的键 "Alice" 在 list2
中也存在,并且对应的值为 26。而第二个映射的键 "Bob" 在 list2
中不存在,因此保留了原始值 30。
上一篇:比较两个以逗号分隔的列。