multikey value sorting in dictionary in python

34 Views Asked by At
a=[{"name":"sri",rank":5},{"name":"harish","rank":1},{"name":"adhya",rank":5},{"name":"mathi","rank":"NUL"}]

print(sorted(a,key=lambda i: (i['rank'], i['name'])) )


TypeError: '<' not supported between instances of 'str' and 'int'

want ouptput like:

a=[{"name":"harish","rank":1},{"name":"adhya",rank":5},{"name":"sri",rank":5},{"name":"mathi","rank":"NUL"}]
1

There are 1 best solutions below

0
On

Cast i['rank'] to str():

print(sorted(a, key=lambda i: (str(i['rank']), i['name'])))

# [{'name': 'harish', 'rank': 1}, {'name': 'adhya', 'rank': 5}, {'name': 'sri', 'rank': 5}, {'name': 'mathi', 'rank': 'NUL'}]