superpollo ha scritto:
Ulrich Eckhardt ha scritto:
Hi!
I wrote a simple loop like this:
d = {}
...
for k in d:
if some_condition(d[k]):
d.pop(k)
If I run this, Python complains that the dictionary size changed during
iteration. I understand that the iterator relies on the internal
structure
not changing, but how would I structure this loop otherwise?
my first thought (untested):
use a copy of d for the if clause, then pop from the original.
bye
i mean:
>>> d = {"name":"max","surname":"zanardi","nick":"zanna"}
>>> dc = copy.copy(d)
>>> dc
{'nick': 'zanna', 'surname': 'zanardi', 'name': 'max'}
>>> for k in dc:
... if dc[k].startswith("z"):
... d.pop(k)
...
'zanna'
'zanardi'
>>> d
{'name': 'max'}
>>> dc
{'nick': 'zanna', 'surname': 'zanardi', 'name': 'max'}
>>>
bye
--
http://mail.python.org/mailman/listinfo/python-list