somedict = {...}
[ x[0] for x in sorted(somedict.iteritems(), lambda x, y: cmp(x[1], y[1])) ]
The cooler (and faster) way is to use itemgetter from the operator module, with the key parameter to sorted().
To sort a dict by keys, use:
import operator
somedict = {...}
[k for k, v in sorted(d.iteritems(), key=itemgetter(0))]
To sort a dict by values, instead use the line:
import operator
somedict = {...}
[k for k, v in sorted(d.iteritems(), key=itemgetter(1))]
somedict = {...}
[k for k, v in sorted(d.iteritems(), key=itemgetter(1))]
Remember how itemgetter works: it is identical to the key lookup operator. In other words, in the code below,
somedict = {'a': 1}
operator.itemgetter('a')(somedict)
somedict['a']
the last two lines do exactly the same thing. This is a neat trick to avoid a lambda call, since subroutine calls are relatively expensive.
No comments:
Post a Comment