"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como evitar o "RuntimeError: o dicionário mudou de tamanho durante a iteração" em Python?

Como evitar o "RuntimeError: o dicionário mudou de tamanho durante a iteração" em Python?

Publicado em 2024-11-10
Navegar:640

How to Avoid the \

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:

  1. Crie um novo dicionário com as modificações desejadas:
new_d = {}
for key, value in d.items():
    if value:
        new_d[key] = value
  1. Use o método 'popitem' do Python 3.3 e itere sobre uma cópia:
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.

Tutorial mais recente Mais>

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