Это еще один способ сделать это, используя пару раз встроенную функцию zip()
и функцию chain()
модуля itertools
.
Идея состоит в том, чтобы использовать zip()
сначала сгруппируйте элементы списков (('A', '1', 'ROM'), ('B', '2', 'MON'), ('C', '3', 'SUN')
), как мы желаем, и ключи каждого словаря ('CLIENT', 'ROW', 'KP')
).
Затем мы можем использовать понимание списка, перебирая только создал список values
и заархивировал его содержимое вместе с кортежем keys
, чтобы наконец создать словари, которые будут храниться в списке s
from itertools import chain
d = [{'CLIENT': ['A','B','C']},{'ROW':['1','2','3']},{'KP':['ROM','MON','SUN']}]
keys, *values = zip(*[chain(dict_.keys(), *dict_.values()) for dict_ in d])
s = [dict(zip(keys, tuple_)) for tuple_ in values]
Содержимое s
будет :
[
{'CLIENT': 'A', 'ROW': '1', 'KP': 'ROM'},
{'CLIENT': 'B', 'ROW': '2', 'KP': 'MON'},
{'CLIENT': 'C', 'ROW': '3', 'KP': 'SUN'}
]