Если вы просто хотите, чтобы список всех ключей во всех словарях, вы можете использовать dict.viewkeys()
(для Python 2.7) или dict.keys()
в Python 3.x, чтобы получить объект просмотра словаря, а затем пересечь их.
Пример для Python 3.x -
>>> Dict1 = {'ky1':1, 'ky2':2,'ky_3':3}
>>> Dict2 = {'ky1':4, 'ky2':5,'ky_4':6}
>>> Dict3 = {'ky2':7, 'ky3':8,'ky_5':9}
>>>
>>> Dict1.keys() & Dict2.keys() & Dict3.keys()
{'ky2'}
>>> list(Dict1.keys() & Dict2.keys() & Dict3.keys())
['ky2']
Для Python 2.7 Dict1.viewkeys()
использования, и т.д., вместо того, чтобы .keys()
.
Если у вас есть список словарей, один из способов сделать это в одной строке с помощью functools.reduce()
функции, будет -
>>> ld = [{'ky1':1, 'ky2':2,'ky_3':3},{'ky1':4, 'ky2':5,'ky_4':6},{'ky2':7, 'ky3':8,'ky_5':9}]
>>> res = list(reduce(lambda x, y: x & y.keys() , ld))
>>> res
['ky2']
Сходная логика, используя цикл -
>>> ld = [{'ky1':1, 'ky2':2,'ky_3':3},{'ky1':4, 'ky2':5,'ky_4':6},{'ky2':7, 'ky3':8,'ky_5':9}]
>>> res = None
>>> for d in ld:
... if not res:
... res = d.keys()
... else:
... res = res & d.keys()
...
>>> list(res)
['ky2']
В приведенном выше примере, что вы хотите в качестве вывода? –