我想要做的是检查'dragonLoot'中的值是否存在于dictionairy'inv'键中。如果是这样,我想添加1到该值,如果没有,我想要创建一个新的密钥与该值,并添加1.Python列表循环错误:TypeError:列表索引必须是整数,而不是str
我想我已经得到的if,否则部分正确,但我一些如何struggeling得到它循环和reciving一个TypeError:列表索引必须是整数,而不是str错误。下面是代码:
#Inventory and the Loot value
inv = {'gold coin': 42, 'rope': 1}
dragonLoot = ['gold coin', 'dagger', 'gold coin', 'gold coin', 'ruby']
#Function to loop through the items in the list
def displayInventory(inventory):
print('Inventory:')
item_total = 0
for j, k in inventory.items():
print(str(k) + ' ' + j)
item_total += k
print('Total number of items: %s' % str(item_total))
#Where the problem occur
def addToInventory(inventory, addedItems):
for i in addedItems:
if addedItems[i] in inventory.keys():
#Edit: I see an error here now, but I will fix it after I get the loop working
inventory[addedItems[i]] + 1
else:
inventory.setdefault(addedItems[i], 1)
inv = addToInventory(inv, dragonLoot)
displayInventory(inv)
我已经tryed很多其他的解决方案我已经在这里找到在计算器上,但没有做的伎俩。这可能是我造成的与Loop本身无关的其他错误吗?
完全回溯:
Traceback (most recent call last):
File "C:/Users/*****/Dropbox/*****", line 19, in <module>
inv = addToInventory(inv, dragonLoot)
File "C:/Users/*****/Dropbox/*****", line 14, in addToInventory
if addedItems[i] in inventory.keys():
TypeError: list indices must be integers, not str
什么是完整的追溯? –
Traceback(最近一次调用最后一次): 文件“C:/ Users/***/Dropbox/Programming/simpleGame.py”,第19行,在 inv = addToInventory(inv,dragonLoot) 文件“C:/用户/ ***/Dropbox /编程/ simpleGame.py“,第14行,在addToInventory 如果在inventory.keys()中addedItems [i]: TypeError:列表索引必须是整数,而不是str –
Salviati
仅供参考,从不需要'.keys()' - 字典中的'in'运算符已经检查了键列表。 – ThiefMaster