Я работаю над проблемой, приведенной в главе 5 книги Автоматизация скучного материала с помощью Python, в которой мне нужно определить функцию (addToInventory
), которая должна добавлять элементы в список (с именем dragonLoot
) для словаря (с именем inv
) и другой функции (displayInventory
), которая должна отображать новый словарь (inv
). Функция displayInventory
прекрасно работает, когда я тестирую ее отдельно, но когда я запускаю полную программу, я получаю RuntimeError: dictionary size changed during iteration
. Вот мой код:
def displayInventory(inv):
for k,j in inv.items(): #to display inv in format of a game inventory
print(k,end=':')
print(j)
def addToInventory(inv,dragonLoot):
for a,b in inv.items(): #a represents key and b represents values
for c in range(len(dragonLoot)-1):
if a==dragonLoot[c]: #to check items in dragonLoot
b+=1 #adding 1 to value if its corresponding key exists in dragonloot
else:
inv.setdefault(dragonLoot[c],1) #adding the new item if it dosent exist in dragonLoot
return inv
inv = {'gold coin':42,'rope':1}
dragonLoot = ['gold coin','dagger','gold coin','gold coin','ruby']
inv = addToInventory(inv,dragonLoot)
displayInventory(inv)
вот ошибка:
Traceback (most recent call last):
File "c:\users\murali\mu_code\addtoinventory.py", line 16, in <module>
inv = addToInventory(inv,dragonLoot)
File "c:\users\murali\mu_code\addtoinventory.py", line 7, in addToInventory
for a,b in inv.items():
RuntimeError: dictionary changed size during iteration
, пожалуйста, скажите мне, где я делаю ошибку, а также, какие ошибки могут вызвать такую ошибку. Я также нашел другое решение этой проблемы, но я хочу знать проблему в этой программе.