У меня есть приведенный ниже набор из 7 словарей
{'empid':785, 'empname':'Ibrahim', 'date(2022,5,1)':'Unmarked'}
{'empid':785, 'empname':'Ibrahim', 'date(2022,5,2)':'Unmarked'}
{'empid':785, 'empname':'Ibrahim', 'date(2022,5,3)':'Present'}
{'empid':785, 'empname':'Ibrahim', 'date(2022,5,4)':'Unmarked'}
{'empid':785, 'empname':'Ibrahim', 'date(2022,5,5)':'Unmarked'}
{'empid':785, 'empname':'Ibrahim', 'date(2022,5,6)':'Absent'}
{'empid':785, 'empname':'Ibrahim', 'date(2022,5,7)':'Unmarked'}
Я хочу преобразовать в формат ниже.
{'empid':785, 'empname':'Ibrahim', 'date(2022,5,1)':'Unmarked', 'date(2022,5,2)':'Unmarked', 'date(2022,5,3)':'Present', 'date(2022,5,4)':'Unmarked', 'date(2022,5,5)':'Unmarked', 'date(2022,5,6)':'Absent', 'date(2022,5,7)':'Unmarked'}
Как я могу это сделать?
def Merge(a,b,c,d,e,f,g):
res = a | b | c | d | e | f | g
return res
a = {'empid':785, 'empname':'Ibrahim', 'date(2022,5,1)':'Unmarked'}
b = {'empid':785, 'empname':'Ibrahim', 'date(2022,5,2)':'Unmarked'}
c = {'empid':785, 'empname':'Ibrahim', 'date(2022,5,3)':'present'}
d = {'empid':785, 'empname':'Ibrahim', 'date(2022,5,4)':'Unmarked'}
e = {'empid':785, 'empname':'Ibrahim', 'date(2022,5,5)':'Unmarked'}
f = {'empid':785, 'empname':'Ibrahim', 'date(2022,5,6)':'Absent'}
g = {'empid':785, 'empname':'Ibrahim', 'date(2022,5,7)':'Unmarked'}
result = Merge(a,b,c,d,e,f,g)
Другой метод:
dcts = [
{"empid": 785, "empname": "Ibrahim", "date(2022,5,1)": "Unmarked"},
{"empid": 785, "empname": "Ibrahim", "date(2022,5,2)": "Unmarked"},
{"empid": 785, "empname": "Ibrahim", "date(2022,5,3)": "Present"},
{"empid": 785, "empname": "Ibrahim", "date(2022,5,4)": "Unmarked"},
{"empid": 785, "empname": "Ibrahim", "date(2022,5,5)": "Unmarked"},
{"empid": 785, "empname": "Ibrahim", "date(2022,5,6)": "Absent"},
{"empid": 785, "empname": "Ibrahim", "date(2022,5,7)": "Unmarked"},
]
out = {k: v for d in dcts for k, v in d.items()}
print(out)
Отпечатки:
{
"empid": 785,
"empname": "Ibrahim",
"date(2022,5,1)": "Unmarked",
"date(2022,5,2)": "Unmarked",
"date(2022,5,3)": "Present",
"date(2022,5,4)": "Unmarked",
"date(2022,5,5)": "Unmarked",
"date(2022,5,6)": "Absent",
"date(2022,5,7)": "Unmarked",
}
from functools import reduce
lst = [{'empid': 785, 'empname': 'Ibrahim', 'date(2022,5,1)': 'Unmarked'},
{'empid': 785, 'empname': 'Ibrahim', 'date(2022,5,2)': 'Unmarked'},
{'empid': 785, 'empname': 'Ibrahim', 'date(2022,5,3)': 'Present'},
{'empid': 785, 'empname': 'Ibrahim', 'date(2022,5,4)': 'Unmarked'},
{'empid': 785, 'empname': 'Ibrahim', 'date(2022,5,5)': 'Unmarked'},
{'empid': 785, 'empname': 'Ibrahim', 'date(2022,5,6)': 'Absent'},
{'empid': 785, 'empname': 'Ibrahim', 'date(2022,5,7)': 'Unmarked'}]
def fun(dct1, dct2):
res = dct1.copy()
for key, value in dct2.items():
if key not in dct1:
res[key] = value
return res
reduce(fun, lst)
Ваш ответ может быть улучшен с помощью дополнительной вспомогательной информации. Пожалуйста, редактировать, чтобы добавить дополнительную информацию, например цитаты или документацию, чтобы другие могли подтвердить правильность вашего ответа. Дополнительную информацию о том, как писать хорошие ответы, можно найти в справочном центре.
Ваш ответ может быть улучшен с помощью дополнительной вспомогательной информации. Пожалуйста, редактировать, чтобы добавить дополнительную информацию, например цитаты или документацию, чтобы другие могли подтвердить правильность вашего ответа. Дополнительную информацию о том, как писать хорошие ответы, можно найти в справочном центре.