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