Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Elixir 查找一个地图中存在但另一个地图中不存在的关键点_Elixir - Fatal编程技术网

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)
什么是
--