使用动态变量迭代多个字典:
Iterating over multiple dictionaries with dynamic variables:
我有多个词典,而且词典的数量不固定,例如
year0 = {'A':'alpha','B':'beta','C':'gamma'}
year1 = {'D':'delta','E':'epsilon','F':'zeta'}
...
yearN = {dictionary N}
我的 objective 是循环遍历字典并将它们写入同一 Excel 文档中的新工作表,使用 openpyxl。我的代码如下:
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
变成了字典。
我有多个词典,而且词典的数量不固定,例如
year0 = {'A':'alpha','B':'beta','C':'gamma'}
year1 = {'D':'delta','E':'epsilon','F':'zeta'}
...
yearN = {dictionary N}
我的 objective 是循环遍历字典并将它们写入同一 Excel 文档中的新工作表,使用 openpyxl。我的代码如下:
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
变成了字典。