所以我有一个我想要的字符串列表= 999
with open ("Inventory.txt", 'r') as i:
for items in i:
item = GetItemID(items)
PositionOfItems[items]=HERO_INVENTORY_POS
HERO_INVENTORY_POS is = 999
,但我收到上面显示的错误,如果我遗漏了其他任何需要,请告诉我。
这是我用来生成项目的代码,所以我只是试图重新创建它。
ItemRequest = input("Which item would you like?").upper()
for i in ItemList:
if i == ItemRequest:
ItemRequest = GetItemID(ItemRequest)
PositionOfItems[ItemRequest]=HERO_INVENTORY_POS`
答案 0 :(得分:2)
如果PositionOfItems
是列表,那么items
需要是整数。现在,它是一个字符串,因为你正在从文件中读取它。
尝试:
PositionOfItems[int(items)]=HERO_INVENTORY_POS
或者,您是否打算使用item
而不是items
为列表编制索引?在这种情况下你应该做
PositionOfItems[item]=HERO_INVENTORY_POS
答案 1 :(得分:0)
取决于您如何定义PositionOfItems
在您的代码行中
PositionOfItems[items]=HERO_INVENTORY_POS
您将其视为字典而不是列表,其中items
是关键字,HERO_INVENTORY_POS
是值。当我尝试复制你的代码片段(下面)时,我的错误是字典在使用之前没有被定义为空,如果定义为列表,我收到了TypeError: list indices must be integers, not str
。
with open("test.txt", 'r') as f:
dict = {} #This line
for item in f:
dict[item] = 999
print item,
如果您已将PositionOfItems
指定为列表,则问题在于您将引用尚未定义的索引(或至少未在您的代码中显示)并试图用字符串(items
)而不是整数来引用它们。 (给你TypeError)