-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSort_People.py
54 lines (41 loc) · 1.7 KB
/
Sort_People.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Sun May 22 11:35:40 2022
@author: Sydney
"""
from datetime import datetime
class SortPeople:
def __init__(self, personList):
self.personList = personList
def __sort_key_last_name(self, person):
return person.lastName
def __sort_people(self, people, sort_key, reverse=False):
return sorted(people, key=sort_key, reverse=reverse)
def sort_by_gender_then_lastname(self):
females = []
males = []
for person in self.personList:
if person.gender == "Female":
females.append(person)
if person.gender == "Male":
males.append(person)
femalesByLastName = self.__sort_people(females, self.__sort_key_last_name)
malesByLastName = self.__sort_people(males, self.__sort_key_last_name)
sortedByGenderAndLastName = femalesByLastName + malesByLastName
return sortedByGenderAndLastName
def sort_by_birth_then_lastname(self):
def sort_key_birth_date_then_last_name(person):
return datetime.strptime(person.dateOfBirth, '%m/%d/%Y'), person.lastName
return self.__sort_people(self.personList, sort_key_birth_date_then_last_name)
def sort_by_last_name_desc(self):
reverse = True
return self.__sort_people(self.personList, self.__sort_key_last_name, reverse)
def print_element_list(self, providedList=None):
listToPrint = []
if providedList:
listToPrint = providedList
else:
listToPrint = self.personList
for element in listToPrint:
element.printPerson()