【问题标题】:Export nested dictionary to csv将嵌套字典导出到 csv
【发布时间】:2018-04-15 09:19:09
【问题描述】:

我需要将嵌套字典导出为 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 以获得这样的列表。

【问题讨论】:

  • 它是否必须是 csv? JSON 或 yaml 更适合嵌套字典。
  • id放在fields之前怎么样。然后你可以让 dict 字段是前两个之后的任何内容
  • 不幸的是,它必须是 csv(它是为需要以这种格式保存的外部合作伙伴)并且没有机会改变 dict,它是如何来自不能无论如何都要改变。

标签: python-3.x loops csv


【解决方案1】:

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

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]]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-19
    • 2017-12-30
    • 1970-01-01
    • 1970-01-01
    • 2022-11-25
    • 1970-01-01
    • 2017-02-11
    • 2016-12-12
    相关资源
    最近更新 更多