Evitando o erro "RuntimeError: dicionário mudou de tamanho durante a iteração"
Tentativa de modificar um dicionário enquanto itera sobre ele, como visto no trecho de código abaixo, pode acionar o erro "RuntimeError: dicionário mudou de tamanho durante a iteração":
d = {'a': [1], 'b': [1, 2], 'c': [], 'd':[]}
for i in d:
if not d[i]:
d.pop(i)
Para superar essa limitação, várias abordagens podem ser empregadas:
Python 2.xe 3.x:
Force uma cópia das chaves usando 'list':
for i in list(d):
Python 3.x (e posterior):
Usar 'collections.OrderedDict':
from collections import OrderedDict
for i in OrderedDict(d):
Soluções alternativas:
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)
Ao aproveitar essas técnicas, você pode contornar o erro "RuntimeError: dicionário mudou de tamanho durante a iteração" ao manipular dicionários em Python.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3