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)
On Monday, March 2, 2015 at 10:40:30 AM UTC-8, Charles Heizer wrote: > Sorry, > > sortedlist = sorted(mylist , key=lambda elem: "%s %s" % (elem['name'], > LooseVersion(elem['version'])), reverse=True) > > This is what I was trying but LooseVersion() was not sorting version numbers > like I thought it would. You will notice that Chrome version "40.0.2214.111" > is higher than "40.0.2214.91" but in the end result it's not sorting it that > way. > > Thanks, > Charlie > > On Monday, March 2, 2015 at 10:32:40 AM UTC-8, Emile van Sebille wrote: > > On 3/2/2015 10:17 AM, Charles Heizer wrote: > > > Hello, > > > I'm new to python and I'm trying to find the right way to solve this > > > issue I have. > > > > > > I'm trying to sort this list by name and then by version numbers. The > > > problem I'm having is that I can not get the version numbers sorted with > > > the highest at the top or sorted properly. > > > > > > mylist = [{'name': u'com.google.earth', 'version': u'7.1.2.2041'}, > > > {'name': u'com.google.earth', 'version': u'7.1.2.2019'}, > > > {'name': u'com.google.Chrome', 'version': u'40.0.2214.93'}, > > > {'name': u'com.google.Chrome', 'version': u'40.0.2214.91'}, > > > {'name': u'com.google.Chrome', 'version': u'40.0.2214.111'}, > > > {'name': u'com.google.Chrome', 'version': u'39.0.2171.99'}, > > > {'name': u'com.google.Chrome', 'version': u'39.0.2171.95'}, > > > {'name': u'com.google.Chrome', 'version': u'39.0.2171.71'}, > > > {'name': u'com.google.Chrome', 'version': u'38.0.2125.122'}, > > > {'name': u'com.google.Chrome', 'version': u'38.0.2125.111'}, > > > {'name': u'com.google.Chrome', 'version': u'38.0.2125.104'}, > > > {'name': u'com.google.Chrome', 'version': u'38.0.2125.101'}, > > > {'name': u'com.google.Chrome', 'version': u'37.0.2062.94'}, > > > {'name': u'com.google.Chrome', 'version': u'37.0.2062.120'}, > > > {'name': u'com.google.Chrome', 'version': u'36.0.1985.143'}, > > > {'name': u'com.google.Chrome', 'version': u'36.0.1985.125'}, > > > {'name': u'com.google.Chrome', 'version': u'35.0.1916.153'}, > > > {'name': u'com.google.Chrome', 'version': u'35.0.1916.114'}, > > > {'name': u'com.google.Chrome', 'version': u'34.0.1847.137'}, > > > {'name': u'com.google.Chrome', 'version': u'34.0.1847.131'}, > > > {'name': u'com.google.Chrome', 'version': u'34.0.1847.116'}, > > > {'name': u'com.google.Chrome', 'version': u'33.0.1750.152'}, > > > {'name': u'com.google.Chrome', 'version': u'33.0.1750.149'}, > > > {'name': u'com.google.Chrome', 'version': u'33.0.1750.146'}, > > > {'name': u'com.google.Chrome', 'version': u'32.0.1700.107'}, > > > {'name': u'com.google.Chrome', 'version': u'31.0.1650.63'}, > > > {'name': u'com.google.Chrome', 'version': u'31.0.1650.57'}] > > > > > > sortedlist = sorted(mylist , key=lambda x, y: x['name'] > > > LooseVersion(elem['version'])), reverse=True) > > > > You'll need to fix LooseVersion or elem or both -- or show them so we > > can help. > > > > Emile > > > > > > > > > > > > Thanks, > > > Charlie > > > -- https://mail.python.org/mailman/listinfo/python-list