Elixir 查找一个地图中存在但另一个地图中不存在的关键点
我有两张地图。找出一个Elixir 查找一个地图中存在但另一个地图中不存在的关键点,elixir,Elixir,我有两张地图。找出一个映射中存在哪些键,而另一个映射中不存在哪些键的方法是什么?使用with是最简单的方法: #假设您的两个地图是: map_a=%{a:1,b:2,c:3,d:4} map_b=%{c:3,d:4,e:5,f:6} #获取map_a中存在但map_b中不存在的密钥 a_b_diff=Map.keys(Map_a)--Map.keys(Map#b)#=>[:a,:b] #获取map_b中存在但map_a中不存在的密钥 b_a_diff=Map.keys(Map_b)——Map.k
映射中存在哪些键,而另一个映射中不存在哪些键的方法是什么?使用with是最简单的方法:
#假设您的两个地图是:
map_a=%{a:1,b:2,c:3,d:4}
map_b=%{c:3,d:4,e:5,f:6}
#获取map_a中存在但map_b中不存在的密钥
a_b_diff=Map.keys(Map_a)--Map.keys(Map#b)#=>[:a,:b]
#获取map_b中存在但map_a中不存在的密钥
b_a_diff=Map.keys(Map_b)——Map.keys(Map#a)#=>[:e,:f]
使用with是最简单的方法:
#假设您的两个地图是:
map_a=%{a:1,b:2,c:3,d:4}
map_b=%{c:3,d:4,e:5,f:6}
#获取map_a中存在但map_b中不存在的密钥
a_b_diff=Map.keys(Map_a)--Map.keys(Map#b)#=>[:a,:b]
#获取map_b中存在但map_a中不存在的密钥
b_a_diff=Map.keys(Map_b)——Map.keys(Map#a)#=>[:e,:f]
--
对于大型列表来说效率极低。由于您已经有一个映射,因此可以使用Map.has\u key?/2
在O(log n)
time中查找是否存在任何键。可以使用带有过滤器的
的简单,以获得您想要的结果:
iex(1)> map1 = %{a: 1, b: 2, d: 3, f: 4}
%{a: 1, b: 2, d: 3, f: 4}
iex(2)> map2 = %{b: 5, c: 6, f: 7, g: 8}
%{b: 5, c: 6, f: 7, g: 8}
iex(3)> for {k, _} <- map1, !Map.has_key?(map2, k), do: k
[:a, :d]
输出:
--: 113367µs
for: 739µs
true
如果您的地图很小,--
肯定比这个略短,可读性也更高,应该足够好了。--
对于大型列表来说效率极低。由于您已经有一个映射,因此可以使用Map.has\u key?/2
在O(log n)
time中查找是否存在任何键。可以使用带有过滤器的
的简单,以获得您想要的结果:
iex(1)> map1 = %{a: 1, b: 2, d: 3, f: 4}
%{a: 1, b: 2, d: 3, f: 4}
iex(2)> map2 = %{b: 5, c: 6, f: 7, g: 8}
%{b: 5, c: 6, f: 7, g: 8}
iex(3)> for {k, _} <- map1, !Map.has_key?(map2, k), do: k
[:a, :d]
输出:
--: 113367µs
for: 739µs
true
如果您的地图很小,--
肯定比这略短,可读性更好,应该足够了。好。如果我只有一个键列表和一个映射,我想检查哪些键在映射中不存在,我该怎么做?你可以使用或类似于:keys--map.keys(map)
什么是--
?好的。如果我只有一个键列表和一个映射,我想检查哪些键在映射中不存在,我该怎么做?你可以使用或类似的:keys--map.keys(map)
什么是--
?