【发布时间】:2019-11-11 04:16:46
【问题描述】:
假设我有一个如下所示的数据结构(这已大大简化,我的实际数据在每个日期都有大量特定日期的数据):
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...})
但是有没有一种更 Pythonic/更有效的方法来使用带有嵌套数据的列表推导来做到这一点?我能想到的几乎都是对内部循环使用列表理解,然后使用extend 来构建列表而不是附加。想法?
【问题讨论】:
标签: python list-comprehension flatten