正在使用动态变量对多个字典进行迭代:



我有多个字典,字典的数量不是固定的,例如

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变成了一本字典。

相关内容

  • 没有找到相关文章

最新更新