#python #dictionary #for-loop #if-statement #console
Вопрос:
dictionary_of_spliting = {"Food":"Honey",
"Trash1":"some",
"Trash2":"some",
"Trash3":"your",
"Thing":"resorces"}
for keys in dictionary_of_spliting:
if var <= 12:
dictionary_of_spliting["Country"] = "France"
Traceback (most recent call last)
File "C:UsersIKPycharmProjectsMore sting methods.py", line 20, in <module>
for keys in dictionary_of_spliting:
RuntimeError: dictionary changed size during iteration
Комментарии:
1. Почему ты вообще зацикливаешься? Просто используйте
dictionary_of_spliting["Country"] = "France"
строку, если вы хотите связать строку «Страна» с «Францией». Ошибка возникает из-за того, что вы изменяете словарь во время его итерации с помощьюfor
цикла.2.
var
не определено3. @Carcigenicate, почему ты не добавил это в качестве ответа? (искренне удивляясь)
4. @queste, потому что их намерения неясны. Мне не нравится публиковать ответы, если я не думаю, что хорошо понимаю вопрос. В настоящее время я не понимаю, почему они зацикливаются, поэтому мне неудобно публиковать ответ, пока их намерения не станут яснее. Обратите внимание, что текущий ответ решает непосредственную проблему, но код, который они рекомендуют, по-прежнему не имеет никакого смысла. Зачем зацикливаться на поиске по словарю?
Ответ №1:
Вы изменяете диктант во время его итерации — это недопустимо, так как это нарушает базовый итератор.
Вы можете заменить
for keys in dictionary_of_splitting
с
for keys in list(dictionary_of_splitting)
чтобы сделать копию записей и предотвратить эту проблему. Вы также можете использовать dictionary_of_splitting.keys() при использовании python2