我有多个字典,字典的数量不是固定的,例如
year0 = {'A':'alpha','B':'beta','C':'gamma'}
year1 = {'D':'delta','E':'epsilon','F':'zeta'}
...
yearN = {dictionary N}
我的目标是循环使用字典,并使用openpyxl将它们写入同一Excel文档中的新工作表。我的代码如下:
31. for name in all_variables:
32. if name.startswith('year'):
33. workbook = Workbook()
34. sheet = workbook.active
35. year_num = 0
36. row = 1
37. sheet.title = "Year"+str(year_num)
38. for key in name.keys():
39. sheet.cell(row, 1, key)
40. sheet.cell(row, 2, name[key])
41. row += 1
42. year_num += 1
43. sheet = workbook.create_sheet()
然而,该代码抛出以下错误:
line 38, in <module> for key in name.keys(): AttributeError: 'str' object has no attribute 'keys'
即使当我在第38行硬编码字典名称时,也是如此:
31. for name in all_variables:
32. if name.startswith('year'):
33. workbook = Workbook()
34. sheet = workbook.active
35. year_num = 0
36. row = 1
37. sheet.title = "Year"+str(year_num)
38. for key in year0.keys():
39. sheet.cell(row, 1, key)
40. sheet.cell(row, 2, name[key])
41. row += 1
42. year_num += 1
43. sheet = workbook.create_sheet()
第40行抛出以下错误:
line 40 in <module> sheet.cell(row, 2, name[key]) TypeError: string indices must be integers
关于如何正确地进行迭代,有什么帮助吗?非常感谢。
在上面的代码中,name
是一个字符串,而不是具有该名称的变量。具体地说,如果它迭代到year0
,它就会变成'year0'
,而不是{'A':'alpha','B':'beta','C':'gamma'}
。在您的情况下,您可以在if语句后添加此行:
name = eval(name)
。
现在你的name
变成了一本字典。