"list_or_dict must be a list or a dict" 在 Python 的 openpyxl 包中使用追加时
"list_or_dict must be a list or a dict" when using append in openpyxl package of Python
基于本教程:LINK我们有这样的结构:
from openpyxl import Workbook
from openpyxl.compat import range
wb = Workbook()
ws = wb.active
for row in range(1,3):
ws.append(range(100))
wb.save(finename ='mtest2.xlsx')
此 returns 以下错误 ws.append(range(100))
:
TypeError: list_or_dict must be a list or a dict
有什么问题?
显然 ws.append
的参数必须是字典或列表。大概您正在使用 Python 3.x,其中 range
no longer returns a list(它现在的行为类似于 Python 2.x 的 xrange
)。
最简单的修复方法是将 range
显式转换为 list
:
for row in range(1, 3):
ws.append(list(range(100)))
正如@jonrsharpe 指出的那样,您不能像这样使用范围。 Python 中的范围本质上仅用于循环。您可以将其转换为列表:list(range(100))
如果您确实需要明确的值。
基于本教程:LINK我们有这样的结构:
from openpyxl import Workbook
from openpyxl.compat import range
wb = Workbook()
ws = wb.active
for row in range(1,3):
ws.append(range(100))
wb.save(finename ='mtest2.xlsx')
此 returns 以下错误 ws.append(range(100))
:
TypeError: list_or_dict must be a list or a dict
有什么问题?
显然 ws.append
的参数必须是字典或列表。大概您正在使用 Python 3.x,其中 range
no longer returns a list(它现在的行为类似于 Python 2.x 的 xrange
)。
最简单的修复方法是将 range
显式转换为 list
:
for row in range(1, 3):
ws.append(list(range(100)))
正如@jonrsharpe 指出的那样,您不能像这样使用范围。 Python 中的范围本质上仅用于循环。您可以将其转换为列表:list(range(100))
如果您确实需要明确的值。