【发布时间】:2019-08-14 23:08:09
【问题描述】:
我需要将多嵌套字典写入 Excel 文件。字典的结构为dict1:{dict2:{dict3:value}}}。我的第三个写循环是引发keyerror: '',即使不应该有任何空白键。
我尝试使用这个可恶的怪物,因为它在较小的词典中效果很好,但是 1) 必须有更好的方法 2) 我无法为这本词典扩展它...
import xlsxwriter
workbook = xlsxwriter.Workbook('datatest.xlsx')
worksheet = workbook.add_worksheet('test1')
row = 0
col = 0
for key in sam_bps.keys():
row += 1
worksheet.write(row, col, key)
for key in sam_bps[sam].keys():
row, col = 0,1
worksheet.write(row,col,key)
row += 1
for key in sam_bps[sam][bp].keys():
row,col = 0,2
worksheet.write(row,col,key)
row += 1
for key in sam_bps[sam][bp][mpn].keys():
row,col = 0,3
worksheet.write(row,col,key)
row += 1
for item in sam_bps[sam][bp][mpn].keys():
row,col = 0,4
worksheet.write(row,col,item)
row += 1
workbook.close()
我还考虑将字典转换为元组列表或列表列表,但它没有输出我需要的内容。无论如何,之后拆分它们可能会花费更多时间。
这是字典的代码:
sam_bps = {}
sam_bps_header = ['SAM','BP','MPN','PLM_Rate']
for row in plmdata:
sam,mpn,bp,doc = row[24],row[5],row[7],row[2]
if sam == '':
sam = 'Unknown'
if doc == 'Requirement':
if sam not in sam_bps:
sam_bps[sam] = {bp:{mpn:heatscores[mpn]}}
elif bp not in sam_bps[sam]:
sam_bps[sam][bp] = {mpn:heatscores[mpn]}
elif mpn not in sam_bps[sam][bp]:
sam_bps[sam][bp][mpn] = heatscores[mpn]
print(sam_bps['Dan Reiser'])
编辑:添加打印语句以显示每个反馈的输出
{'Fortress Solutions': {'MSM5118160F60JS': 45}, 'Benchmark Electronics': {'LT1963AES8': 15}, 'Axxcss Wireless Solutions Inc': {'MGA62563TR1G': 405}}
我希望看到这个输出到 Excel 文件,第一列当然是 sam_bps 的第一个键
【问题讨论】:
标签: python dictionary