我正在访问第三方API,该API返回包含简单值和嵌套(嵌入式?)词典的字典。我需要将其转换为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的新手,如果我遗漏了一些明显的东西,请道歉。
谢谢! - 克里斯
答案 0 :(得分:1)
如果您不需要accounts
其他任何可以做的事情:
for account in accounts:
account['LastModifiedBy'] = account['LastModifiedBy']['Name']
否则,.copy()
它也会这样做。