Open In App

Sorting Objects of User Defined Class in Python

Last Updated : 06 Mar, 2025
Comments
Improve
Suggest changes
2 Likes
Like
Report

Sorting objects of a user-defined class in Python involves arranging instances of the class based on the values of one or more of their attributes. For example, if we have a class Person with attributes like name and age, we might want to sort a list of Person objects based on the age attribute to organize them from youngest to oldest.

Using sorted()

sorted() function returns a new sorted list, leaving the original list unchanged. By providing a key argument, we can specify a function to extract a value used for comparison during sorting.


Output
[('geeks', 1), ('for', 2), ('computer', 3), ('science', 3), ('geeks', 4)]

Explanation: sorted() function sorts the list based on the b attribute of each object, using a lambda function (lambda x: x.b) as the key argument. This ensures that the objects are compared and sorted according to their b values in ascending order.

Using list.sort()

The sort() method sorts a list in place, meaning the original list is modified. It is slightly more efficient than sorted() when the goal is to modify the list itself.


Output
[('geeks', 1), ('for', 2), ('computer', 3), ('science', 3), ('geeks', 4)]

Explanation: sort() method sorts the list in place based on the b attribute of each object, using a lambda function (lambda x: x.b) as the key argument. This modifies the original list, arranging the objects in ascending order of their b values.

using operator.attrgetter()

The attrgetter() function from the operator module is used to retrieve the value of an attribute. It's a more efficient way of specifying the key function compared to a lambda function.


Output
[('geeks', 1), ('for', 2), ('computer', 3), ('science', 3), ('geeks', 4)]

Explanation: sorted() sorts the list based on the b attribute of each object, using attrgetter('b') as the key argument. The attrgetter() function efficiently retrieves the b attribute for comparison, ensuring that the objects are sorted in ascending order of their b values.

Using functools.cmp_to_key()

The cmp_to_key() function from the functools module allows using a comparison function instead of a key function. While more versatile, this method can be less efficient due to the overhead of comparison operations.


Output
[('geeks', 1), ('for', 2), ('computer', 3), ('science', 3), ('geeks', 4)]

Explanation: sorted() function sorts the list based on the b attribute using a custom compare() function with cmp_to_key(), which subtracts the b values to determine the order in ascending order.


Next Article

Similar Reads