Вы возвращаетесь к словарю здесь:
for i, cat[selectedcat] in enumerate(cat[selectedcat]):
Вы просите for
l oop назначить i
и cat[selectedcat]
. Не делайте этого.
Выше по сути дела это делается:
iterator = iter(enumerate(cat[selectedcat]))
while True:
try:
next_item = next(iterator)
except StopIteration:
break
i, cat[selectedcat] = next_item
и поэтому присваивает каждому значению от cat[selectedcat]
до cat[selectedcat]
самой .
Это работает, потому что исходный словарь, на который ссылается cat[selectedcat]
, все еще ссылается на объект enumerate()
, и поэтому все его ключи все еще создаются в l oop. Но сам словарь cat
просят заменить значение ключа selectedcat
на каждую из строк категории по очереди. Это может произойти, потому что тогда вы печатаете новое значение для cat[selectedcat]
внутри l oop.
Если вы хотите показать значения с числами, вы хотите использовать другое, новое имя переменной для l oop, например:
for i, category in enumerate(cat[selectedcat]):
print(i, category)
Здесь category
- новая переменная (как и i
).