In this tutorial, we will see what are the different ways to sort objects in Python.
Different ways to Sort Objects in Python?
Here I am going to show you three different ways to sort the objects in python, let’s see one by one.
Create a list of item object to sort it.
class Item():
def __init__(self,id,name,price):
self.id=id
self.name=name
self.price=price
def __repr__(self):
return '({},{},${})'.format(self.id,self.name,self.price)
item1 = Item(100,"Mobile",25000)
item2 = Item(200,"Books",17000)
item3 = Item(300,"Pens",12000)
item4 = Item(400,"Laptops",75000)
items = [item1,item2,item3,item4]
1. Sort Objects in Python using a custom function:
Define a custom function to sort python objects by taking the key (key can be anything like id or name or price).
def item_sort(item):
return item.price
sorted_items = sorted(items,key=item_sort)
sorted_items = sorted(items,key=item_sort,reverse=True) #reverse order
print(sorted_items)
Created a custom sort function and pass this function as a key in sorted function. If you want to sort the reverse order, you can enable the reverse=True attribute to sorted function.
Output:
[(300,Pens,12000), (200,Books,17000), (100,Mobile,25000), (400,Laptops,75000)]
2. Sort Objects in Python using a lambda function:
Lambda anonymous functions are very flexible to use, we can implement them very easily and quickly. Here is the simplest way to sort objects using lambda.
#Using lambda
sorted_items = sorted(items,key=lambda item:item.name)
print(sorted_items)
Sorting Items by their names.
Output:
[(200,Books,17000), (400,Laptops,75000), (100,Mobile,25000), (300,Pens,12000)]
3. Sort Objects in Python using operator module:
Python operator module’s attrgetter gives us a better way to sort the objects in python.
from operator import attrgetter
sorted_items = sorted(items,key=attrgetter("id"))
print(sorted_items)
Output:
[(100,Mobile,25000), (200,Books,17000), (300,Pens,12000), (400,Laptops,75000)]
Recommended: Python list Data structure in depth.
Happy Learning 🙂