Ways to sort list of dictionaries by values in Python – Using lambda function

Created with Sketch.

Ways to sort list of dictionaries by values in Python – Using lambda function

Sorting has always been a useful utility in day-to-day programming. Dictionary in Python is widely used in many applications ranging from competitive domain to developer domain(e.g. handling JSON data). Having a knowledge to sort dictionaries according to its values can prove useful in such cases.
There are 2 ways to achieve this sorting, namely by

  • Using lambda functions
  • Using itemgetter

This article deals with sorting using lambda function and using “sorted()” inbuilt function. Various variations can also be achieved for sorting the dictionaries.

  • For descending order : Use “reverse = True” in addition to the sorted() function.
  • For sorting w.r.t multiple values : Seperate by “comma” mentioning the correct order in which sorting has to be performed.
# Python code demonstrate the working of
# sorted() with lambda
 
# Initializing list of dictionaries
lis = [{ "name" : "Nandini", "age" : 20}, 
{ "name" : "Manjeet", "age" : 20 },
{ "name" : "Nikhil" , "age" : 19 }]
 
# using sorted and lambda to print list sorted
# by age 
print "The list printed sorting by age: "
print sorted(lis, key = lambda i: i['age'])
 
print ("\r")
 
# using sorted and lambda to print list sorted 
# by both age and name. Notice that "Manjeet"
# now comes before "Nandini"
print "The list printed sorting by age and name: "
print sorted(lis, key = lambda i: (i['age'], i['name']))
 
print ("\r")
 
# using sorted and lambda to print list sorted
# by age in descending order
print "The list printed sorting by age in descending order: "
print sorted(lis, key = lambda i: i['age'],reverse=True)

Output:

The list printed sorting by age: 
[{'age': 19, 'name': 'Nikhil'}, {'age': 20, 'name': 'Nandini'}, {'age': 20, 'name': 'Manjeet'}]

The list printed sorting by age and name: 
[{'age': 19, 'name': 'Nikhil'}, {'age': 20, 'name': 'Manjeet'}, {'age': 20, 'name': 'Nandini'}]

The list printed sorting by age in descending order: 
[{'age': 20, 'name': 'Nandini'}, {'age': 20, 'name': 'Manjeet'}, {'age': 19, 'name': 'Nikhil'}]

Leave a Reply

Your email address will not be published. Required fields are marked *