如何解决使用动态变量迭代多个字典:
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,name[key])
41. row += 1
42. year_num += 1
43. sheet = workbook.create_sheet()
第 40 行然后抛出以下错误:
line 40 in <module> sheet.cell(row,name[key]) TypeError: string indices must be integers
有关如何正确执行此迭代的任何帮助?谢谢!
解决方法
在上面的代码中,您的 first
是一个字符串,还不是具有该名称的变量。具体来说,如果它迭代到name
,它会变成year0
,而不是'year0'
。在您的情况下,您可以在 if 语句之后添加此行:
{'A':'alpha','B':'beta','C':'gamma'}
。
现在您的 name = eval(name)
变成了一本字典。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。