2017-11-02 20 views
1

ネストされた辞書をCSVにエクスポートする必要があります。ここでは、(後でcsvファイルで1行にする必要があること)、各エントリは次のようになります。ネストされた辞書をcsvにエクスポート

{'createdTime': '2017-10-30T12:33:02.000Z', 
'fields': {'Date': '2017-10-30T12:32:56.000Z', 
      'field1': '[email protected]', 
      'field2': 1474538185964188, 
      'field3': 6337, 
      ....}, 
'id': 'reca7LBr64XM1ClWy'} 

私は辞書を反復処理し、リストのリストを作成する必要があると思う使用してからCSVファイルを作成するために(?) csvモジュール

['Date', 'field1', 'field2', 'field3', ...], 
['2017-10-30T12:32:56.000Z', '[email protected]', 1474538185964188, 6337 ...] 

私の問題は、このようなリストに到達するためには、辞書を繰り返し実行するスマートな方法を見つけることです。

+0

が、それは厳密にCSV形式でなければなりませんか? JSONまたはyamlはネストされたdictsにはるかに適しています。 –

+0

'fields'の前に' id'を置くのはどうですか?それでは、最初の2つの後でdictフィールドを何かにすることができます – MrJLP

+1

残念ながら、それはcsv(それはそのフォーマットでそれを持つ必要がある外部パートナー用)であり、dictを変更する機会はありません。とにかく変更できないデータベースから – Helmi

答えて

0

あなたは、以下の方法で値を取得することができます。

def process_data(): 

    csv_data = [{'createdTime': '2017-10-30T12:33:02.000Z', 
       'fields': {'Date': '2017-10-30T12:32:56.000Z', 
       'field1': '[email protected]', 
       'field2': 1474538185964188, 
       'field3': 6337}, 
       'id': 'reca7LBr64XM1ClWy'}, 
       {'createdTime': '2017-10-30T12:33:02.000Z', 
       'fields': {'Date': '2017-10-30T12:32:56.000Z', 
       'field1': '[email protected]', 
       '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', '[email protected]', 
#   1474538185964188, 6337], ['2017-10-30T12:32:56.000Z', 
#   '[email protected]', 1474538185964188, 6337]] 
関連する問題