Допустим, у меня есть структура данных, которая выглядит следующим образом (это значительно упрощается, мои фактические данные содержат значительный объем данных за день для каждой работы на каждую дату):
data = {
'2019-01-01': {
'job-1-id': {'name': 'Job 1', 'address': '123 main st.'},
'job-2-id': {'name': 'Job 2', 'address': '824 1st Ave.'},
},
'2019-01-02': {
'job-1-id': {'name': 'Job 1', 'address': '123 main st.'},
'job-3-id': {'name': 'Job 3', 'address': '485 Pleasant Rd.'}
}
}
То, что я хотел бы сделать, это сгладить это, выдвинув date
и job id
к массиву объектов.Например:
data_flat = [
{'id': 'job-1-id', 'date': '2019-01-01', 'name': 'Job 1', 'address': '123 main st.'},
{'id': 'job-2-id', 'date': '2019-01-01', 'name': 'Job 2', 'address': '824 1st Ave.'},
{'id': 'job-1-id', 'date': '2019-01-02', 'name': 'Job 1', 'address': '123 main st.'},
{'id': 'job-3-id', 'date': '2019-01-02', 'name': 'Job 3', 'address': '485 Pleasant Rd.'},
]
Очевидно, что я могу просмотреть и построить новый массив:
data_flat = []
for date, jobs in data.items():
for job_id, job in jobs.items():
data_flat.append({'id': job_id, 'date': date, etc...})
Но есть ли более питонский / эффективный способ сделать это, используя понимание списка со вложенными данными, напримерэтот?Все, что я могу придумать, - это использовать понимание списка для внутреннего цикла, а затем вместо добавления использовать extend
для построения списка.Мысли? * * 1013