Jun 19, 2016

Sort array of objects using Comparator in python

Problem:- Given an array of  Student objects, sort array using a comparator that sorts them in order of decreasing marks; if  or more students have the same marks, sort those students alphabetically by name.
Input :- Array of Student objects(Student object { Name; Marks;})
amy 90
ckm 90
nikhil 50
shweta 75
ranjan 150

:- Sort based on Marks (Name alphabetically if  marks is same)
ranjan  150
amy    90
ckm   90
shweta  75
nikhil    50

Sample program to sort list of student objects by passing comparator

class Students:
    def __init__(self, name, marks):
        self.name = name
        self.marks = marks 
    def comparator(a, b):
        if a.marks != b.marks :
            if a.marks < b.marks :
                return 1
            elif a.marks > b.marks:
                return -1
            else :
                return 0
            if a.name > b.name :
                return 1
            elif a.name < b.name:
                return -1
            else :
                return 0

print "Enter number of students "
n = int(raw_input())

data = []
for i in range(n):
    print "Enter Name and marks of student %d" %(i+1)
    name, marks = raw_input().split()
    marks = int(marks)
    player = Students(name, marks)
data = sorted(data, cmp=Students.comparator)
print "\nStudents Name and marks in sorted form "
print "Name \t Marks"
print "----------------"
for i in data:
    print i.name+ " \t "+ str(i.marks)

Sample output:-
Enter number of students
Enter Name and marks of student 1
amy 90
Enter Name and marks of student 2
ckm 90
Enter Name and marks of student 3
nikhil 50
Enter Name and marks of student 4
shweta 75
Enter Name and marks of student 5
ranjan 150

Students Name and marks in sorted form
Name Marks
ranjan 150
amy 90
ckm 90
shweta 75
nikhil 50
Location: Hyderabad, Telangana, India


  1. Replies
    1. I am glad that I saw this post. It is informative blog for us and we need this type of blog thanks for share this blog, Keep posting such instructional blogs and I am looking forward for your future posts. Python Projects for Students Data analytics is the study of dissecting crude data so as to make decisions about that data. Data analytics advances and procedures are generally utilized in business ventures to empower associations to settle on progressively Python Training in Chennai educated business choices. In the present worldwide commercial center, it isn't sufficient to assemble data and do the math; you should realize how to apply that data to genuine situations such that will affect conduct. In the program you will initially gain proficiency with the specialized skills, including R and Python dialects most usually utilized in data analytics programming and usage; Python Training in Chennai at that point center around the commonsense application, in view of genuine business issues in a scope of industry segments, for example, wellbeing, promoting and account. Project Center in Chennai