Modificação de dicionário iterativo
É comum precisar excluir itens de um dicionário enquanto itera simultaneamente sobre ele. No entanto, esta operação não tem suporte nativo em Python.
Modificar um dicionário durante a iteração sobre ele pode levar a erros. Por exemplo, o snippet de código que você forneceu pode falhar no Python 3 com o erro:
RuntimeError: dictionary changed size during iteration.
Python 3 Solution
No Python 3, a solução é criar uma lista de chaves do dicionário e iterar sobre essa lista. Aqui está um exemplo:
# Python 3 or higher
for k in list(mydict.keys()):
if mydict[k] == 3:
del mydict[k]
Essa abordagem funciona porque uma lista é imutável e não será afetada por alterações no dicionário.
Solução Python 2
Em Python 2, o método keys() retorna um iterador, que não pode ser modificado durante a iteração. Para modificar o dicionário, você pode usar a seguinte abordagem:
# Python 2
for k, v in mydict.items():
if v == 3:
del mydict[k]
Em Python 2, você também pode converter o iterador em uma lista:
for k in mydict.keys():
if mydict[k] == 3:
del mydict[k]
Abordagem alternativa
Como alternativa, você pode usar o método pop() para excluir itens do dicionário durante a iteração:
for k in list(mydict.keys()):
if k == 3:
mydict.pop(k)
Observe que essa abordagem é mais eficiente porque não cria uma lista adicional.
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