The dict.keys()
view object supports set operations:
dict1.keys() & dict2.keys() # equivalent to set(dict1).intersection(dict2)
However, for smaller dictionaries using a set will probably be faster:
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)
Note that set.intersection()
accepts any iterable as an argument, so you can just pass dict2
to it. Also, no need to call dict1.keys()
as a dict
object by default iterates over its keys.