On May 16, 4:51 pm, Hans Nowak <[EMAIL PROTECTED]> wrote: > [EMAIL PROTECTED] wrote: > > On 16 mai, 23:34, "[EMAIL PROTECTED]" > > <[EMAIL PROTECTED]> wrote: > >> On 16 mai, 23:28, Hans Nowak <[EMAIL PROTECTED]> wrote: > > >>> Dan Upton wrote: > >>>> for pid in procs_dict: > > (snip) > >>> for pid in procs_dict.keys(): > >> I'm afraid this will do the same exact thing. A for loop on a dict > >> iterates over the dict keys, so both statements are strictly > >> equivalent from a practical POV. > > > Hem. Forget it. I should think twice before posting - this will > > obviously make a big difference here. Sorry for the noise. > > :-) It appears that you would be right if this was Python 3.0, though: > > Python 3.0a5 (r30a5:62856, May 16 2008, 11:43:33) > [GCC 4.0.1 (Apple Computer, Inc. build 5367)] on darwin > Type "help", "copyright", "credits" or "license" for more information. > >>> d = {1: 2, 3: 4, 5: 6} > >>> for i in d.keys(): del d[i] > ... > Traceback (most recent call last): > File "<stdin>", line 1, in <module> > RuntimeError: dictionary changed size during iteration > > Maybe 'for i in d' and 'for i in d.keys()' *are* functionally equivalent in > 3.0, > as d.keys() returns an object that iterates over d's keys... but I haven't > read > enough about it yet to be sure. In any case, the problem goes away when we > force a list: > > >>> d = {1: 2, 3: 4, 5: 6} > >>> for i in list(d.keys()): del d[i] > ... > >>> d > {} > > --Hans- Hide quoted text - > > - Show quoted text -
You may be searching for: for i in d.keys()[:]: del d[ i ] -- http://mail.python.org/mailman/listinfo/python-list