将嵌套字典导出到csv

时间:2017-11-02 18:28:20

标签: python-3.x loops csv

我需要将嵌套字典导出为CSV。这是每个条目的样子(后面需要在csv中的一行):

{'createdTime': '2017-10-30T12:33:02.000Z',
 'fields': {'Date': '2017-10-30T12:32:56.000Z',
            'field1': 'example@gmail.com',
            'field2': 1474538185964188,
            'field3': 6337,
            ....},
 'id': 'reca7LBr64XM1ClWy'}

我想我需要遍历字典并创建一个列表列表(?)以使用csv模块创建csv。

['Date', 'field1', 'field2', 'field3', ...],
['2017-10-30T12:32:56.000Z', 'example@gmail.com', 1474538185964188, 6337 ...]

我的问题是找到一种智能的方法来遍历dict以获得这样的列表。

1 个答案:

答案 0 :(得分:0)

您可以通过以下方式获取值:

def process_data():

    csv_data = [{'createdTime': '2017-10-30T12:33:02.000Z',
                'fields': {'Date': '2017-10-30T12:32:56.000Z',
                'field1': 'example@gmail.com',
                'field2': 1474538185964188,
                'field3': 6337},
              'id': 'reca7LBr64XM1ClWy'},
              {'createdTime': '2017-10-30T12:33:02.000Z',
                'fields': {'Date': '2017-10-30T12:32:56.000Z',
                'field1': 'example@gmail.com',
                'field2': 1474538185964188,
                'field3': 6337},
              'id': 'reca7LBr64XM1ClWy'}]


    headers = [key for key in csv_data[0]['fields'].keys()]

    body = []
    for row in csv_data:
        body_row = []
        for colomn_header in headers:
            body_row.append(row['fields'][colomn_header])
        body.append(body_row)

process_data()

#header -- ['Date', 'field1', 'field2', 'field3']
#body -- [['2017-10-30T12:32:56.000Z', 'example@gmail.com', 
#         1474538185964188, 6337], ['2017-10-30T12:32:56.000Z', 
#         'example@gmail.com', 1474538185964188, 6337]]