Как избежать ошибки «RuntimeError: словарь изменил размер во время итерации»
Попытка изменить словарь во время итерации по нему, как показано на приведенный ниже фрагмент кода может вызвать ошибку «RuntimeError: словарь изменил размер во время итерации»:
d = {'a': [1], 'b': [1, 2], 'c': [], 'd':[]}
for i in d:
if not d[i]:
d.pop(i)
Чтобы преодолеть это ограничение, можно использовать различные подходы:
Python 2.x и 3.x:
Принудительно скопируйте ключи, используя 'list':
for i in list(d):
Python 3.x (и более поздние версии):
Используйте 'collections.OrderedDict':
from collections import OrderedDict
for i in OrderedDict(d):
Альтернативные решения:
new_d = {}
for key, value in d.items():
if value:
new_d[key] = value
keys_to_pop = list(d)
for i in keys_to_pop:
if not d[i]:
d.popitem(i)
Используя эти методы, вы можете обойти ошибку «RuntimeError: словарь изменил размер во время итерации» при обработке словарей в Python.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3