2016-06-18 181 views
0

我正在訪問第三方API,該API返回包含簡單值和嵌套(嵌入?)字典的字典。我需要將其轉換爲CSV文件,但我需要從嵌套字典中提取和導出特定值。將簡單值和嵌套字典導出爲CSV字典

這裏就是我得到回來的一個簡單的例子:

accounts = { 
    'Id': '0131232', 
    'AccountName': 'CompanyX', 
    'Active': False, 
    'LastModifiedBy': {'type': 'User', 'Id': '', 'Name': 'Joe Smith'} 
}, 
{ 
    'Id': '987654', 
    'AccountName': 'CompanyY', 
    'Active': True, 
    'LastModifiedBy': {'type': 'User', 'Id': '', 'Name': 'Mary Johnson'} 
} 

我想這個導出爲CSV與下面的代碼:

with open('output.csv', 'w') as f: 
    dwriter = csv.DictWriter(f, accounts[0].keys()) 
    dwriter.writeheader() 
    dwriter.writerows(accounts) 

f.close() 

我想什麼CSV文件如下:

Id,AccountName,Active,LastModifiedBy 
0131232,CompanyX,False,Joe Smith 
987654,CompanyY,True,Mary Johnson 

什麼我越來越上面我的代碼如下:

Id,AccountName,Active,LastModifiedBy 
0131232,CompanyX,False,"{'type': 'User', 'Id': '', 'Name': 'Joe Smith'}" 
987654,CompanyY,True,"{'type': 'User', 'Id': '', 'Name': 'Mary Johnson'}" 

很顯然,我需要提取從嵌套的字典中的鍵值對我想和值分配到更高級別的字典。我的問題是,我該怎麼做,同時仍然處理簡單的值?

看起來這可以用字典理解完成,但我不確定我可以用這個做一個條件。

另外,我可以通過每個記錄,檢查每個值,看看它是否是一本字典,並寫出我想要一個新字典的值,但是這感覺有點過重。

完全披露:我是Python新手,很抱歉,如果我錯過了一些明顯的東西。

謝謝! 克里斯 -

回答

1

如果您不需要accounts爲別的,你可以這樣做:

for account in accounts: 
    account['LastModifiedBy'] = account['LastModifiedBy']['Name'] 

否則,.copy()它,做相同的。

+0

謝謝!那很簡單。猜猜我正在反思它。 – cweirup