-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlist_tuple_object.py
More file actions
78 lines (57 loc) · 2.02 KB
/
list_tuple_object.py
File metadata and controls
78 lines (57 loc) · 2.02 KB
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# Sorting Lists, Tuples, and Objects in Python
# ----- Basic list sorting -----
from operator import attrgetter
li = [9, 1, 8, 2, 7, 3, 6, 4, 5]
s_li = sorted(li)
print('Sorted list:\t', s_li)
print('Original list:\t', li)
# Sort in-place (changes the list)
li.sort()
print('After sort():\t', li)
# Sort descending
s_li_desc = sorted(li, reverse=True)
print('Descending:\t', s_li_desc)
# ----- Sorting tuples -----
tup = (9, 1, 8, 2, 7, 3, 6, 4, 5)
s_tup = sorted(tup)
print('Tuple sorted:\t', s_tup)
# ----- Sorting sets -----
di = {9, 1, 8, 2, 7, 3, 6, 4, 5}
s_di = sorted(di)
print('Set sorted:\t', s_di)
# ----- Sorting strings -----
s = 'sortingexample'
s_sorted = sorted(s)
print('String sorted:\t', s_sorted)
# ----- Sorting by absolute value -----
li = [-6, -5, -4, 1, 2, 3]
s_li = sorted(li, key=abs)
print('Absolute sort:\t', s_li)
# ----- Sorting dictionaries by value -----
d = {'name': 'Corey', 'job': 'programming', 'age': None, 'os': 'Mac'}
s_d = sorted(d)
print('Dict sort (keys):', s_d)
# ----- Sorting custom objects -----
class Employee:
def __init__(self, name, age, salary):
self.name = name
self.age = age
self.salary = salary
def __repr__(self):
return f'({self.name}, {self.age}, ${self.salary})'
e1 = Employee('Carl', 37, 70000)
e2 = Employee('Sarah', 29, 80000)
e3 = Employee('John', 43, 90000)
employees = [e1, e2, e3]
# Sort by name (using attrgetter)
s_employees = sorted(employees, key=lambda e: e.name)
print('\nSorted by name:\t', s_employees)
s_employees = sorted(employees, key=lambda e: e.age)
print('Sorted by age:\t', s_employees)
s_employees = sorted(employees, key=lambda e: e.salary, reverse=True)
print('Sorted by salary (desc):', s_employees)
# Using attrgetter (cleaner & faster)
s_employees = sorted(employees, key=attrgetter('age'))
print('Using attrgetter(age):', s_employees)
s_employees = sorted(employees, key=attrgetter('salary'))
print('Using attrgetter(salary):', s_employees)