Я хочу, чтобы удалить некоторые элементы в словаре в цикле, то я следую коды из этого How to delete items from a dictionary while iterating over it?Как удалить элементы в словаре в цикле
Looping над .keys
:
b = {'a':1, 'b' : 2}
for k in b.keys():
if b[k] == 1:
del b[k]
Результаты в:
Traceback (most recent call last):
File "<input>", line 1, in <module>
RuntimeError: dictionary changed size during iteration
b
{'b': 2}
Итерирование над .items()
:
b = {'a':1, 'b' : 2}
for k, v in b.items():
if v == 1:
del b[k]
Traceback (most recent call last):
File "<input>", line 1, in <module>
RuntimeError: dictionary changed size during iteration
b
{'b': 2}
После этого цикла возвращается правильный результат, но RuntimeError
также поднят, как я могу его исправить?
'list' тоже не нужно. для k в v будет работать одинаково. – user312016
В чем 'v' вы имеете в виду? @ user312016 –
О, я пропустил ваш вопрос, мой пример был плохим, b вместо v: для k в b. – user312016