[Python-3000] Spooky behavior of dict.items() and friends

Jason Orendorff jason.orendorff at gmail.com
Wed Apr 2 23:54:39 CEST 2008


On Tue, Apr 1, 2008 at 9:37 PM, "Martin v. Löwis" <martin at v.loewis.de> wrote:
>  I think it's fairly obvious why the 2.x .keys() has to change. It's
>  just too wasteful to actually build the list of all keys of a dictionary
>  (or even of all values, as you have to create all the tuples as well),
>  if all you want to do is to iterate over it, and the most common
>  operation of .keys() is to iterate over it in a for look (right?).

I don't think so.  Is this a use case for d.keys()?  Why not just
write "for k in d"?

To me, framing the question as "iterate vs. copy" seems bogus.  It's
more like "view vs. copy".  The thing is, copying provides the
semantics I want (of *course* I don't want extra helpings of aliasing
and spooky interaction between collections, are you nuts?), and the
slowness has never bothered me--that I know of.  Views would be
faster, but with silently different semantics.  I think I want
copying.

-j


More information about the Python-3000 mailing list