Inércia Sensorial

2005-10-26

RuntimeError: dictionary changed size during iteration

Filed under: Python — inerte @ 18:34

Em Python, o erro do título desse post acontece quando você percorre um dicionário e ele é mudado durante o laço.

Isso pode acontecer quando fazemos:

1
2
3
4
5
6
7
8
9
>>> dicionario = {'nome': 'Julio', 'sobrenome': 'Nobrega'}
>>> for k, v in dicionario.iteritems():
...     print v
...     del dicionario[k]
...
Nobrega
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
RuntimeError: dictionary changed size during iteration

Se você quer mudar o dicionário durante um laço, use keys():

1
2
3
4
5
6
7
>>> dicionario = {'nome': 'Julio', 'sobrenome': 'Nobrega'}
>>> for k in dicionario.keys():
...     print dicionario[k]
...     del dicionario[k]
...
Nobrega
Julio

Isso só é possível porquê keys() retorna uma lista independente do dicionário.

No Comments »

No comments yet.

RSS feed for comments on this post. TrackBack URL

Leave a comment

You must be logged in to post a comment.

Powered by WordPress