例如,我们有以下词典:
dict1 = {a:b, b:c}
dict2 = {b:c, c:d}
将两个字典的键相交的最有效方法是什么?
当然,一个人可以使用set(dict1.keys()).intersection(set(dict2.keys()))
,但我认为首先将字典转换为集合根本没有效率。
答案 0 :(得分:9)
keys
是一个视图,具有交点运算符
dict1.keys() & dict2.keys()
或者简单地
dict1.keys() & dict2
答案 1 :(得分:3)
dict.keys()
view object支持设置操作:
dict1.keys() & dict2.keys() # equivalent to set(dict1).intersection(dict2)
但是,对于较小的词典,使用集合可能会更快:
In [1]: dict1 = {'a': 'b', 'c': 'd'}
In [2]: dict2 = {'b': 'c', 'c': 'd'}
In [3]: %timeit dict1.keys() & dict2.keys()
448 ns ± 1.9 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
In [4]: %timeit set(dict1).intersection(dict2)
330 ns ± 0.602 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
请注意,set.intersection()
接受任何可迭代作为参数,因此您可以将dict2
传递给它。另外,默认情况下,无需将dict1.keys()
作为dict
对象调用就可以遍历其键。