我正在使用openpyxl读取excel表格。下面是我有问题的代码:
for i in range(3, lastRow):
exData = {}
exData["param1"] = sheet.cell(row=i, column=1).value
exData["param2"] = float(sheet.cell(row=i, column=2).value)
exData["param3"] = float(sheet.cell(row=i, column=3).value)
exData["param4"] = float(sheet.cell(row=i, column=4).value)
exData["param5"] = float(sheet.cell(row=i, column=5).value)
exData["param6"] = float(sheet.cell(row=i, column=6).value)
exData["param7"] = float(sheet.cell(row=i, column=7).value)
exData["param8"] = float(sheet.cell(row=i, column=8).value)
exData["param9"] = float(sheet.cell(row=i, column=9).value)
exData["param10"] = float(sheet.cell(row=i, column=10).value)
变量lastRow设置为6。现在的问题是,如果我打印exData,它只包含第五行的值。如果我打印出来,它应该是3 4 5。所以设置正确,但可能保存不正确?有什么想法吗?在
每次在
i
设置为3、4、5的情况下执行循环时,都会将来自相应行的数据存储在exData["param1"]
等中。因此第二次through覆盖第一次,第三次through覆盖第二次。这就是为什么你的字典只包含最后一行的值。在只初始化字典一次,并使行号成为字典键的一部分:
在循环的每次迭代中都会覆盖字典(exData)中的值,如果希望字典中的每个值都是该列在三行中的值的列表,则需要将其重置为列表,然后附加这些列表。在
您正在为每个循环初始化字典。请在for循环外初始化字典。或者可以使用list存储每个字典,使用以下代码。在
相关问题 更多 >
编程相关推荐