views:

418

answers:

3

The list sort method is a modifier function that returns None.

So if I want to iterate through all of the keys in a dictionary I cannot do:

for k in somedictionary.keys().sort():
    dosomething()

instead, i must:

keys = somedictionary.keys()
keys.sort()
for k in keys:
    dosomething()

Is there a pretty way to iterate through these keys in sorted order without having to break it up in to multiple steps?

+4  A: 

Can I answer my own question?

I have just discovered the handy function "sorted" which does exactly what I was looking for.

for k in sorted(somedictionary.keys()):
    dosomething()

It shows up in http://stackoverflow.com/questions/157424/python-25-dictionary-2-key-sort

Hugh
+16  A: 
for k in sorted(somedictionary.keys()):
    doSomething(k)

Note that you can also get all of the keys and values sorted by keys like this:

for k, v in sorted(somedictionary.iteritems()):
   doSomething(k, v)
Dustin
+3  A: 

Actually, .keys() is not necessary:

for k in sorted(somedictionary):
    doSomething(k)

or

[doSomethinc(k) for k in sorted(somedict)]
odwl