我有以下名为tes的列表,我需要以csv格式存储它。
tes=[('branch=cse\\',{'name':['abc'],'sex':['male']}),('branch=ece\\',{'name':['def']})]
当列表具有所有值时,我的代码运行良好,但是如果列表中缺少某些值,则会收到KeyError。我在下面附加了我的代码。有人可以为我提供更好的选择吗?
import csv
tes=[('branch=cse\\',{'name':['abc'],'sex':['male']}),('branch=ece\\',{'name':['def']})]
with open('check.csv','w') as csvfile:
fieldnames = ['givenName','sex']
writer=csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
for i in tes:
writer.writerow({'givenName': i[1]['name'], 'sex': i[1]['sex']})
答案 0 :(得分:1)
您可以使用i[1].get('sex', "default value")
。如果没有密钥['sex']
,那么它将返回"default value"
而不是KeyError
writer.writerow({'givenName': i[1].get('name', 'unknown'), 'sex': i[1].get('sex', 'male?')})