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.