We're back after a server migration that caused effbot.org to fall over a bit harder than expected. Expect some glitches.

Why doesn't list.sort() return the sorted list?

In situations where performance matters, making a copy of the list just to sort it would be wasteful. Therefore, list.sort sorts the list in place. In order to remind you of that fact, it does not return the sorted list. This way, you won’t be fooled into accidentally overwriting a list when you need a sorted copy but also need to keep the unsorted version around.

In Python 2.4 a new builtin — sorted — has been added. This function creates a new list from a passed iterable, sorts it and returns it.

As a result, here’s the idiom to iterate over the keys of a dictionary in sorted order:

for key in sorted(dict):
    ...do whatever with dict[key]...

Versions of Python prior to 2.4 need to use the following idiom:

keys = dict.keys()
for key in keys:
    ...do whatever with dict[key]...

CATEGORY: general

CATEGORY: design