TypeError:list indices必须是整数,而不是str - 从列表中加载字符串

时间:2015-05-20 19:37:38

标签: python

所以我有一个我想要的字符串列表= 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`

2 个答案:

答案 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)