Sort list of dictionaries
Peter Otten
__peter__ at web.de
Mon Mar 2 14:23:13 EST 2015
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)
More information about the Python-list
mailing list