You can mapdictionaries on set, and then reduceusing set.intersection:
>>> from functools import reduce
>>> d = {
... '0': {'key_x': 0, 'key_y': 15, 'key_z': 41},
... '1': {'key_x': 5, 'key_y': 22},
... '2': {'key_x': 6, 'key_y': 41}
... }
>>> reduce(set.intersection, map(set, d.values()))
{'key_x', 'key_y'}
Note. In Python 3, reducewas ported to functools.
Update: as shown in @John's answer , it set.intersectioncan handle an arbitrary number of sets, so reduceitβs not even required. Simplyset.intersection(*map(set, d.values()))
source
share