On 9/4/07, Noam Raphael <[EMAIL PROTECTED]> wrote:
> On 9/4/07, Greg Ewing <[EMAIL PROTECTED]> wrote:
> > Noam Raphael wrote:
> > > The default dict iterator should in principle be iteritems(), and not
> > > iterkeys().
> >
> > This was discussed at length back when "in" support was
> > added to dicts. There were reasons for choosing to do it
> > the way it's done, and I don't think it's likely to be
> > changed.
> >
> Just out of curiousity - do you remember these reasons?

Consistency with "k in d", where you'll agree with me that the only
useful interpretation is checking for a key. It would be annoying if
"for x in obj:" no longer rhymed with "if x in obj:".

> I just have
> the feeling that back then, iterations were less common, since you
> couldn't iterate over dicts without creating new lists, and you didn't
> have list comprehensions and generators. You couldn't write an
> expression such as
>   dict((x, y) for y, x in d)
> to quickly get the inverse permutation, so the relative ugliness of
>   dict((x, y) for y, x in d.items())
> was not considered.
>
> I don't think that it's likely to be changed too.

I think it's even in PEP 3099 as something we *won't* change. I happen
to be rather fond of it myself.

-- 
--Guido van Rossum (home page: http://www.python.org/~guido/)
_______________________________________________
Python-3000 mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-3000
Unsubscribe: 
http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com

Reply via email to