Path: csiph.com!x330-a1.tempe.blueboxinc.net!aioe.org!news.glorb.com!news-out.readnews.com!transit3.readnews.com!panix!roy From: Roy Smith Newsgroups: comp.lang.python Subject: Re: dictionary size changed during iteration Date: Sat, 07 May 2011 18:12:21 -0400 Organization: PANIX Public Access Internet and UNIX, NYC Lines: 22 Message-ID: References: <4DAED72B.2030400@shopzeus.com> <7xd3jukyn9.fsf@ruckus.brouhaha.com> NNTP-Posting-Host: localhost X-Trace: reader1.panix.com 1304806342 14791 127.0.0.1 (7 May 2011 22:12:22 GMT) X-Complaints-To: abuse@panix.com NNTP-Posting-Date: Sat, 7 May 2011 22:12:22 +0000 (UTC) User-Agent: MT-NewsWatcher/3.5.3b3 (Intel Mac OS X) Xref: x330-a1.tempe.blueboxinc.net comp.lang.python:4922 In article <7xd3jukyn9.fsf@ruckus.brouhaha.com>, Paul Rubin wrote: > Roy Smith writes: > > changes = [ ] > > for key in d.iterkeys(): > > if is_bad(key): > > changes.append(key) > > changes = list(k for k in d if is_bad(k)) > > is a little bit more direct. This is true. I still file list comprehensions under "new fangled toys". While I use them, and appreciate their value, I admit they're not always the first thing that comes to my mind. OBTW, > changes = [k for k in d if is_bad(k)] is even more direct :-)