Iterating over a dictionary's sorted keys

Aahz Maruch aahz at
Fri May 26 09:53:22 EDT 2000

In article <slrn8ird7o.1r1.daniels at localhost.localdomain>,
Alan Daniels <daniels at> wrote:
>The ability to do:
>    for k in blah.keys().sort():
>        print k
>rather than:
>    keys = blah.keys()
>    keys.sort()
>    for k in keys:
>        print k
>is only thwarted by the fact that the "sort()" method of a list
>inexplicably returns a None. I truly wish that more methods returned a
>reference to "self". After all, when you sort a list, don't you get a
>new list, maybe not in implementation, but philisophically? Or when
>you reverse it? Sure, its the same *object*, but its been changed. I
>don't think returning a reference to itself would do any harm.

Actually, it's *precisely* the case that Guido disagrees with your
philosophical position.  It was a design decision to consider [].sort()
and [].reverse() to work on the original list because the programmer
should *always* explicitly request a copy of what may be a 100K element
list.  sort() and reverse() return None to force you to remember that.

(This is my paraphrase of what Guido has said publicly; any errors are
                      --- Aahz (Copyright 2000 by aahz at

Androgynous poly kinky vanilla queer het    <*>
Hugs and backrubs -- I break Rule 6

"Yes, but would you kick any of them out of bed?"
"That depends: do we have to do anything with them in the bed, or
are they just in the bed?" -- AM/SJM

More information about the Python-list mailing list