Sorting a list of dictionaries by dictionary key

Fredrik Lundh fredrik at pythonware.com
Wed May 3 16:34:44 CEST 2006


Nico Grubert wrote:

> > assuming that DateTime returns something that compares correctly, you can
> > do something like:
> >
> >     def sortkey(item):
> >         return item.get("from_datetime")
> >
> >     data.sort(key=sortkey)
> >
> > (assuming Python 2.4 or later)
>
> Thank you very much, Frederik. Unfortunately, I can only use
> Python 2.3.5.

under Python 2.3, you can either use a custom compare function (which
may be slow if you have lots of items, because a sort has to do more com-
pares than there are items):

    def compare(a, b):
        return cmp(sortkey(a), sortkey(b))

    data.sort(compare)

or do your own "decorate-sort-undecorate" (which is what the "key"
option is doing for you):

    data = [ (sortkey(x), x) for x in data ] # decorate
    data.sort()
    data = [ x[1] for x in data ] # undecorate

</F>






More information about the Python-list mailing list