Sort list of dictionaries
Charles Heizer
ceh329 at gmail.com
Tue Mar 3 10:56:39 EST 2015
On Monday, March 2, 2015 at 11:23:37 AM UTC-8, Peter Otten wrote:
> Charles Heizer wrote:
>
> > Never mind, the light bulb finally went off. :-\
> >
> > sortedlist = sorted(mylist , key=lambda elem: "%s %s" % ( elem['name'],
> > (".".join([i.zfill(5) for i in elem['version'].split(".")])) ),
> > reverse=True)
>
> This lightbulb will break with version numbers > 99999 ;)
>
> Here are two alternatives:
>
> result = sorted(
> mylist,
> key=lambda elem: (elem['name'], LooseVersion(elem['version'])),
> reverse=True)
>
> result = sorted(
> mylist,
> key=lambda e: (e["name"], tuple(map(int, e["version"].split(".")))),
> reverse=True)
>
>
> Personally, I prefer to not use a lambda:
>
> def name_version(elem):
> return elem['name'], LooseVersion(elem['version'])
>
> result = sorted(mylist, key=name_version, reverse=True)
Peter, thank you. Me being new to Python why don't you prefer to use a lambda?
More information about the Python-list
mailing list