Skip to content

Commit 2ed5cc8

Browse files
committed
adding sort dict materials
1 parent 8e4cc3f commit 2ed5cc8

File tree

8 files changed

+380
-0
lines changed

8 files changed

+380
-0
lines changed

sort-dict/basic_sort.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
l = [6, 4, 3, 5, 2, 3, 1]
2+
print(sorted(l))
3+
4+
print(sorted({5: 1, 2: 2, 3: 3}))
5+
6+
print(sorted({1: 10, 5: 1, 2: 20}))
7+
8+
print(sorted({1: 10, 5: 1, 2: 20}, reverse=True))
9+
10+
print(list(reversed({1: 10, 5: 1, 2: 20})))
11+
12+
print(sorted([{10: 5}, {50: 2}, {30: 90}, {1: 2}]))
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
from timeit import timeit
2+
3+
dict_to_order = {
4+
1: "requests",
5+
2: "pip",
6+
3: "jinja",
7+
4: "setuptools",
8+
5: "pandas",
9+
6: "numpy",
10+
7: "black",
11+
8: "pillow",
12+
9: "pyparsing",
13+
10: "boto3",
14+
11: "botocore",
15+
12: "urllib3",
16+
13: "s3transfer",
17+
14: "six",
18+
15: "python-dateutil",
19+
16: "pyyaml",
20+
17: "idna",
21+
18: "certifi",
22+
19: "typing-extensions",
23+
20: "charset-normalizer",
24+
21: "awscli",
25+
22: "wheel",
26+
23: "rsa",
27+
}
28+
29+
sorted_with_lambda = "sorted(dict_to_order.items(), key=lambda item: item[1])"
30+
sorted_with_itemgetter = "sorted(dict_to_order.items(), key=itemgetter(1))"
31+
32+
sorted_with_lambda_time = timeit(stmt=sorted_with_lambda, globals=globals())
33+
sorted_with_itemgetter_time = timeit(
34+
stmt=sorted_with_itemgetter,
35+
setup="from operator import itemgetter",
36+
globals=globals(),
37+
)
38+
39+
print(
40+
f"""
41+
{sorted_with_lambda_time=:.2f} seconds
42+
{sorted_with_itemgetter_time=:.2f} seconds
43+
itemgetter is {(
44+
sorted_with_lambda_time / sorted_with_itemgetter_time
45+
):.2f} times faster
46+
""".strip()
47+
)
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
from timeit import timeit
2+
from samples import dictionary_of_dictionaries, list_of_dictionaries
3+
4+
lookups = [15, 18, 19, 16, 6, 12, 5, 3, 9, 20, 2, 10, 13, 17, 4, 14, 11, 7, 8]
5+
6+
list_setup = """
7+
def get_key_from_list(key):
8+
for item in list_of_dictionaries:
9+
if item["id"] == key:
10+
return item
11+
"""
12+
13+
lookup_list = """
14+
for key in lookups:
15+
get_key_from_list(key)
16+
"""
17+
18+
lookup_dict = """
19+
for key in lookups:
20+
dictionary_of_dictionaries[key]
21+
"""
22+
23+
lookup_list_time = timeit(
24+
stmt=lookup_list, setup=list_setup, globals=globals()
25+
)
26+
lookup_dict_time = timeit(stmt=lookup_dict, globals=globals())
27+
28+
print(
29+
f"""\
30+
{lookup_list_time=:.2f} seconds
31+
{lookup_dict_time=:.2f} seconds
32+
dict is {(lookup_list_time / lookup_dict_time):.2f} times faster"""
33+
)
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
from timeit import timeit
2+
from samples import dictionary_of_dictionaries, list_of_dictionaries
3+
4+
list_program = "sorted(list_of_dictionaries, key=lambda item:item['age'])"
5+
dict_program = """
6+
dict(
7+
sorted(
8+
dictionary_of_dictionaries.items(), key=lambda item: item[1]['age']
9+
)
10+
)
11+
"""
12+
13+
list_time = timeit(stmt=list_program, globals=globals())
14+
dict_time = timeit(stmt=dict_program, globals=globals())
15+
16+
print(
17+
f"""
18+
{list_time=:.2f} seconds
19+
{dict_time=:.2f} seconds
20+
list is {(dict_time/list_time):.2f} times faster
21+
"""
22+
)

sort-dict/itemgetter_multiple.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
from operator import itemgetter
2+
3+
scores = {
4+
"Jack": 14,
5+
"Jill": 14,
6+
"John": 15,
7+
"Jane": 15,
8+
"Jim": 14,
9+
"Jess": 14,
10+
}
11+
12+
print(sorted(scores.items(), key=itemgetter(1, 0)))

sort-dict/nested_sort.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
from operator import itemgetter
2+
3+
data = {
4+
193: {"name": "John", "age": 30, "skills": {"python": 8, "javascript": 7}},
5+
209: {"name": "Bill", "age": 15, "skills": {"python": 6}},
6+
746: {"name": "Jane", "age": 58, "skills": {"javascript": 2, "python": 5}},
7+
109: {"name": "Jill", "age": 83, "skills": {"java": 10}},
8+
984: {"name": "Jack", "age": 28, "skills": {"c": 8, "assembly": 7}},
9+
765: {"name": "Penelope", "age": 76, "skills": {"python": 8, "go": 5}},
10+
598: {"name": "Sylvia", "age": 30, "skills": {"bash": 8, "java": 7}},
11+
483: {"name": "Anna", "age": 30, "skills": {"javascript": 10}},
12+
277: {
13+
"name": "Beatriz",
14+
"age": 30,
15+
"skills": {"python": 2, "javascript": 4},
16+
},
17+
}
18+
19+
20+
def getPython(item):
21+
skills = item[1]["skills"]
22+
23+
return skills["python"] if "python" in skills else 0
24+
25+
26+
print(sorted(data.items(), key=getPython, reverse=True))

sort-dict/samples.py

Lines changed: 205 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,205 @@
1+
dictionary_of_dictionaries = {
2+
1: {"first_name": "Dorthea", "last_name": "Emmanuele", "age": 29},
3+
2: {"first_name": "Evelina", "last_name": "Ferras", "age": 91},
4+
3: {"first_name": "Frederica", "last_name": "Livesay", "age": 99},
5+
4: {"first_name": "Murray", "last_name": "Linning", "age": 36},
6+
5: {"first_name": "Annette", "last_name": "Garioch", "age": 93},
7+
6: {"first_name": "Rozamond", "last_name": "Todd", "age": 36},
8+
7: {"first_name": "Tiffi", "last_name": "Varian", "age": 28},
9+
8: {"first_name": "Noland", "last_name": "Cowterd", "age": 51},
10+
9: {"first_name": "Dyana", "last_name": "Fallows", "age": 100},
11+
10: {"first_name": "Diahann", "last_name": "Cutchey", "age": 44},
12+
11: {"first_name": "Georgianne", "last_name": "Steinor", "age": 32},
13+
12: {"first_name": "Sabina", "last_name": "Lourens", "age": 31},
14+
13: {"first_name": "Lynde", "last_name": "Colbeck", "age": 35},
15+
14: {"first_name": "Abdul", "last_name": "Crisall", "age": 84},
16+
15: {"first_name": "Quintus", "last_name": "Brando", "age": 95},
17+
16: {"first_name": "Rowena", "last_name": "Geraud", "age": 21},
18+
17: {"first_name": "Maurice", "last_name": "MacAindreis", "age": 83},
19+
18: {"first_name": "Pall", "last_name": "O'Cullinane", "age": 79},
20+
19: {"first_name": "Kermie", "last_name": "Willshere", "age": 20},
21+
20: {"first_name": "Holli", "last_name": "Tattoo", "age": 88},
22+
# 21: {"first_name": "Ambrosi", "last_name": "Kinsey", "age": 93},
23+
# 22: {"first_name": "Gary", "last_name": "Strasse", "age": 50},
24+
# 23: {"first_name": "Ulrica", "last_name": "Greenhead", "age": 34},
25+
# 24: {"first_name": "Melisse", "last_name": "Goford", "age": 21},
26+
# 25: {"first_name": "Tommy", "last_name": "Gaspero", "age": 93},
27+
# 26: {"first_name": "Claribel", "last_name": "Richel", "age": 75},
28+
# 27: {"first_name": "Amos", "last_name": "Rois", "age": 98},
29+
# 28: {"first_name": "Christiano", "last_name": "Worsham", "age": 34},
30+
# 29: {"first_name": "Kristal", "last_name": "Poltun", "age": 40},
31+
# 30: {"first_name": "Ophelia", "last_name": "Crudgington", "age": 83},
32+
# 31: {"first_name": "Leonore", "last_name": "Hartley", "age": 20},
33+
# 32: {"first_name": "Jenine", "last_name": "Streater", "age": 96},
34+
# 33: {"first_name": "Bank", "last_name": "Fritche", "age": 56},
35+
# 34: {"first_name": "Polly", "last_name": "Oosthout", "age": 48},
36+
# 35: {"first_name": "Valle", "last_name": "Adderley", "age": 69},
37+
# 36: {"first_name": "Joy", "last_name": "Balaisot", "age": 94},
38+
# 37: {"first_name": "Tildi", "last_name": "Playford", "age": 25},
39+
# 38: {"first_name": "Packston", "last_name": "Kiddy", "age": 22},
40+
# 39: {"first_name": "Rube", "last_name": "Risman", "age": 84},
41+
# 40: {"first_name": "Ardeen", "last_name": "Muslim", "age": 37},
42+
# 41: {"first_name": "Bellina", "last_name": "MacEvilly", "age": 73},
43+
# 42: {"first_name": "Ulrika", "last_name": "Conklin", "age": 92},
44+
# 43: {"first_name": "Eldridge", "last_name": "Clementi", "age": 50},
45+
# 44: {"first_name": "Sharron", "last_name": "Sturman", "age": 75},
46+
# 45: {"first_name": "Kai", "last_name": "Jzak", "age": 86},
47+
# 46: {"first_name": "Lissa", "last_name": "Sumnall", "age": 77},
48+
# 47: {"first_name": "Nathalie", "last_name": "Duckering", "age": 36},
49+
# 48: {"first_name": "Dawn", "last_name": "Eiler", "age": 85},
50+
# 49: {"first_name": "Desmund", "last_name": "Pridding", "age": 97},
51+
# 50: {"first_name": "Sharl", "last_name": "De Marchi", "age": 46},
52+
# 51: {"first_name": "Kingston", "last_name": "Medler", "age": 27},
53+
# 52: {"first_name": "Winthrop", "last_name": "Johanssen", "age": 55},
54+
# 53: {"first_name": "Lenora", "last_name": "Strasse", "age": 66},
55+
# 54: {"first_name": "Zia", "last_name": "Cubbinelli", "age": 73},
56+
# 55: {"first_name": "Reece", "last_name": "MacCahee", "age": 77},
57+
# 56: {"first_name": "Nadia", "last_name": "Hiley", "age": 81},
58+
# 57: {"first_name": "Gregor", "last_name": "Balsdone", "age": 35},
59+
# 58: {"first_name": "Nicolai", "last_name": "Longfellow", "age": 95},
60+
# 59: {"first_name": "Bobbie", "last_name": "Royans", "age": 73},
61+
# 60: {"first_name": "Erny", "last_name": "Cardus", "age": 88},
62+
# 61: {"first_name": "Ossie", "last_name": "Simoncini", "age": 67},
63+
# 62: {"first_name": "Cynthie", "last_name": "Mitcheson", "age": 66},
64+
# 63: {"first_name": "Dione", "last_name": "Burbudge", "age": 29},
65+
# 64: {"first_name": "Boniface", "last_name": "Heinert", "age": 81},
66+
# 65: {"first_name": "Heidie", "last_name": "Mathonnet", "age": 92},
67+
# 66: {"first_name": "Janice", "last_name": "Fettiplace", "age": 91},
68+
# 67: {"first_name": "Lisette", "last_name": "Sutton", "age": 87},
69+
# 68: {"first_name": "Hervey", "last_name": "Lawrenson", "age": 42},
70+
# 69: {"first_name": "Briant", "last_name": "Tarply", "age": 75},
71+
# 70: {"first_name": "Ethelind", "last_name": "Pentelo", "age": 80},
72+
# 71: {"first_name": "Kevon", "last_name": "Sapsford", "age": 28},
73+
# 72: {"first_name": "Clarabelle", "last_name": "Innocenti", "age": 40},
74+
# 73: {"first_name": "Eveline", "last_name": "Denning", "age": 89},
75+
# 74: {"first_name": "Joyous", "last_name": "Verdey", "age": 36},
76+
# 75: {"first_name": "Pattie", "last_name": "Wasteney", "age": 45},
77+
# 76: {"first_name": "Kiley", "last_name": "Yglesia", "age": 44},
78+
# 77: {"first_name": "Kesley", "last_name": "Causier", "age": 43},
79+
# 78: {"first_name": "Maxy", "last_name": "Biggerstaff", "age": 53},
80+
# 79: {"first_name": "Pattin", "last_name": "Brome", "age": 77},
81+
# 80: {"first_name": "Mitch", "last_name": "Bolletti", "age": 96},
82+
# 81: {"first_name": "Giffie", "last_name": "De Meis", "age": 27},
83+
# 82: {"first_name": "Alicea", "last_name": "Parbrook", "age": 34},
84+
# 83: {"first_name": "Timi", "last_name": "Toretta", "age": 97},
85+
# 84: {"first_name": "Quinton", "last_name": "Riccione", "age": 64},
86+
# 85: {"first_name": "Ayn", "last_name": "Spragge", "age": 47},
87+
# 86: {"first_name": "Katina", "last_name": "Popescu", "age": 83},
88+
# 87: {"first_name": "Andrea", "last_name": "Corwood", "age": 33},
89+
# 88: {"first_name": "Kitty", "last_name": "Grove", "age": 48},
90+
# 89: {"first_name": "Jecho", "last_name": "Ashpole", "age": 87},
91+
# 90: {"first_name": "Lynnelle", "last_name": "Ganning", "age": 40},
92+
# 91: {"first_name": "Alvina", "last_name": "Spriggen", "age": 90},
93+
# 92: {"first_name": "Nerta", "last_name": "Grzegorzewski", "age": 35},
94+
# 93: {"first_name": "Weidar", "last_name": "Clegg", "age": 95},
95+
# 94: {"first_name": "Corry", "last_name": "Goatcher", "age": 56},
96+
# 95: {"first_name": "Ingaborg", "last_name": "Whetson", "age": 80},
97+
# 96: {"first_name": "Kirbee", "last_name": "Caldecott", "age": 86},
98+
# 97: {"first_name": "Mildred", "last_name": "Dymocke", "age": 44},
99+
# 98: {"first_name": "Wendye", "last_name": "Lyne", "age": 44},
100+
# 99: {"first_name": "Odessa", "last_name": "Praundl", "age": 48},
101+
# 100: {"first_name": "Curran", "last_name": "Sant", "age": 99},
102+
}
103+
104+
list_of_dictionaries = [
105+
{"id": 1, "first_name": "Dorthea", "last_name": "Emmanuele", "age": 29},
106+
{"id": 2, "first_name": "Evelina", "last_name": "Ferras", "age": 91},
107+
{"id": 3, "first_name": "Frederica", "last_name": "Livesay", "age": 99},
108+
{"id": 4, "first_name": "Murray", "last_name": "Linning", "age": 36},
109+
{"id": 5, "first_name": "Annette", "last_name": "Garioch", "age": 93},
110+
{"id": 6, "first_name": "Rozamond", "last_name": "Todd", "age": 36},
111+
{"id": 7, "first_name": "Tiffi", "last_name": "Varian", "age": 28},
112+
{"id": 8, "first_name": "Noland", "last_name": "Cowterd", "age": 51},
113+
{"id": 9, "first_name": "Dyana", "last_name": "Fallows", "age": 100},
114+
{"id": 10, "first_name": "Diahann", "last_name": "Cutchey", "age": 44},
115+
{"id": 11, "first_name": "Georgianne", "last_name": "Steinor", "age": 32},
116+
{"id": 12, "first_name": "Sabina", "last_name": "Lourens", "age": 31},
117+
{"id": 13, "first_name": "Lynde", "last_name": "Colbeck", "age": 35},
118+
{"id": 14, "first_name": "Abdul", "last_name": "Crisall", "age": 84},
119+
{"id": 15, "first_name": "Quintus", "last_name": "Brando", "age": 95},
120+
{"id": 16, "first_name": "Rowena", "last_name": "Geraud", "age": 21},
121+
{"id": 17, "first_name": "Maurice", "last_name": "MacAindreis", "age": 83},
122+
{"id": 18, "first_name": "Pall", "last_name": "O'Cullinane", "age": 79},
123+
{"id": 19, "first_name": "Kermie", "last_name": "Willshere", "age": 20},
124+
{"id": 20, "first_name": "Holli", "last_name": "Tattoo", "age": 88},
125+
# {"id": 21, "first_name": "Ambrosi", "last_name": "Kinsey", "age": 93},
126+
# {"id": 22, "first_name": "Gary", "last_name": "Strasse", "age": 50},
127+
# {"id": 23, "first_name": "Ulrica", "last_name": "Greenhead", "age": 34},
128+
# {"id": 24, "first_name": "Melisse", "last_name": "Goford", "age": 21},
129+
# {"id": 25, "first_name": "Tommy", "last_name": "Gaspero", "age": 93},
130+
# {"id": 26, "first_name": "Claribel", "last_name": "Richel", "age": 75},
131+
# {"id": 27, "first_name": "Amos", "last_name": "Rois", "age": 98},
132+
# {"id": 28, "first_name": "Christiano", "last_name": "Worsham", "age": 34},
133+
# {"id": 29, "first_name": "Kristal", "last_name": "Poltun", "age": 40},
134+
# {"id": 30, "first_name": "Ophelia", "last_name": "Crudgington", "age": 83},
135+
# {"id": 31, "first_name": "Leonore", "last_name": "Hartley", "age": 20},
136+
# {"id": 32, "first_name": "Jenine", "last_name": "Streater", "age": 96},
137+
# {"id": 33, "first_name": "Bank", "last_name": "Fritche", "age": 56},
138+
# {"id": 34, "first_name": "Polly", "last_name": "Oosthout", "age": 48},
139+
# {"id": 35, "first_name": "Valle", "last_name": "Adderley", "age": 69},
140+
# {"id": 36, "first_name": "Joy", "last_name": "Balaisot", "age": 94},
141+
# {"id": 37, "first_name": "Tildi", "last_name": "Playford", "age": 25},
142+
# {"id": 38, "first_name": "Packston", "last_name": "Kiddy", "age": 22},
143+
# {"id": 39, "first_name": "Rube", "last_name": "Risman", "age": 84},
144+
# {"id": 40, "first_name": "Ardeen", "last_name": "Muslim", "age": 37},
145+
# {"id": 41, "first_name": "Bellina", "last_name": "MacEvilly", "age": 73},
146+
# {"id": 42, "first_name": "Ulrika", "last_name": "Conklin", "age": 92},
147+
# {"id": 43, "first_name": "Eldridge", "last_name": "Clementi", "age": 50},
148+
# {"id": 44, "first_name": "Sharron", "last_name": "Sturman", "age": 75},
149+
# {"id": 45, "first_name": "Kai", "last_name": "Jzak", "age": 86},
150+
# {"id": 46, "first_name": "Lissa", "last_name": "Sumnall", "age": 77},
151+
# {"id": 47, "first_name": "Nathalie", "last_name": "Duckering", "age": 36},
152+
# {"id": 48, "first_name": "Dawn", "last_name": "Eiler", "age": 85},
153+
# {"id": 49, "first_name": "Desmund", "last_name": "Pridding", "age": 97},
154+
# {"id": 50, "first_name": "Sharl", "last_name": "De Marchi", "age": 46},
155+
# {"id": 51, "first_name": "Kingston", "last_name": "Medler", "age": 27},
156+
# {"id": 52, "first_name": "Winthrop", "last_name": "Johanssen", "age": 55},
157+
# {"id": 53, "first_name": "Lenora", "last_name": "Strasse", "age": 66},
158+
# {"id": 54, "first_name": "Zia", "last_name": "Cubbinelli", "age": 73},
159+
# {"id": 55, "first_name": "Reece", "last_name": "MacCahee", "age": 77},
160+
# {"id": 56, "first_name": "Nadia", "last_name": "Hiley", "age": 81},
161+
# {"id": 57, "first_name": "Gregor", "last_name": "Balsdone", "age": 35},
162+
# {"id": 58, "first_name": "Nicolai", "last_name": "Longfellow", "age": 95},
163+
# {"id": 59, "first_name": "Bobbie", "last_name": "Royans", "age": 73},
164+
# {"id": 60, "first_name": "Erny", "last_name": "Cardus", "age": 88},
165+
# {"id": 61, "first_name": "Ossie", "last_name": "Simoncini", "age": 67},
166+
# {"id": 62, "first_name": "Cynthie", "last_name": "Mitcheson", "age": 66},
167+
# {"id": 63, "first_name": "Dione", "last_name": "Burbudge", "age": 29},
168+
# {"id": 64, "first_name": "Boniface", "last_name": "Heinert", "age": 81},
169+
# {"id": 65, "first_name": "Heidie", "last_name": "Mathonnet", "age": 92},
170+
# {"id": 66, "first_name": "Janice", "last_name": "Fettiplace", "age": 91},
171+
# {"id": 67, "first_name": "Lisette", "last_name": "Sutton", "age": 87},
172+
# {"id": 68, "first_name": "Hervey", "last_name": "Lawrenson", "age": 42},
173+
# {"id": 69, "first_name": "Briant", "last_name": "Tarply", "age": 75},
174+
# {"id": 70, "first_name": "Ethelind", "last_name": "Pentelo", "age": 80},
175+
# {"id": 71, "first_name": "Kevon", "last_name": "Sapsford", "age": 28},
176+
# {"id": 72, "first_name": "Clarabelle", "last_name": "Innocenti", "age": 40},
177+
# {"id": 73, "first_name": "Eveline", "last_name": "Denning", "age": 89},
178+
# {"id": 74, "first_name": "Joyous", "last_name": "Verdey", "age": 36},
179+
# {"id": 75, "first_name": "Pattie", "last_name": "Wasteney", "age": 45},
180+
# {"id": 76, "first_name": "Kiley", "last_name": "Yglesia", "age": 44},
181+
# {"id": 77, "first_name": "Kesley", "last_name": "Causier", "age": 43},
182+
# {"id": 78, "first_name": "Maxy", "last_name": "Biggerstaff", "age": 53},
183+
# {"id": 79, "first_name": "Pattin", "last_name": "Brome", "age": 77},
184+
# {"id": 80, "first_name": "Mitch", "last_name": "Bolletti", "age": 96},
185+
# {"id": 81, "first_name": "Giffie", "last_name": "De Meis", "age": 27},
186+
# {"id": 82, "first_name": "Alicea", "last_name": "Parbrook", "age": 34},
187+
# {"id": 83, "first_name": "Timi", "last_name": "Toretta", "age": 97},
188+
# {"id": 84, "first_name": "Quinton", "last_name": "Riccione", "age": 64},
189+
# {"id": 85, "first_name": "Ayn", "last_name": "Spragge", "age": 47},
190+
# {"id": 86, "first_name": "Katina", "last_name": "Popescu", "age": 83},
191+
# {"id": 87, "first_name": "Andrea", "last_name": "Corwood", "age": 33},
192+
# {"id": 88, "first_name": "Kitty", "last_name": "Grove", "age": 48},
193+
# {"id": 89, "first_name": "Jecho", "last_name": "Ashpole", "age": 87},
194+
# {"id": 90, "first_name": "Lynnelle", "last_name": "Ganning", "age": 40},
195+
# {"id": 91, "first_name": "Alvina", "last_name": "Spriggen", "age": 90},
196+
# {"id": 92, "first_name": "Nerta", "last_name": "Grzegorzewski", "age": 35},
197+
# {"id": 93, "first_name": "Weidar", "last_name": "Clegg", "age": 95},
198+
# {"id": 94, "first_name": "Corry", "last_name": "Goatcher", "age": 56},
199+
# {"id": 95, "first_name": "Ingaborg", "last_name": "Whetson", "age": 80},
200+
# {"id": 96, "first_name": "Kirbee", "last_name": "Caldecott", "age": 86},
201+
# {"id": 97, "first_name": "Mildred", "last_name": "Dymocke", "age": 44},
202+
# {"id": 98, "first_name": "Wendye", "last_name": "Lyne", "age": 44},
203+
# {"id": 99, "first_name": "Odessa", "last_name": "Praundl", "age": 48},
204+
# {"id": 100, "first_name": "Curran", "last_name": "Sant", "age": 99},
205+
]

sort-dict/sorting_objects.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
from dataclasses import dataclass
2+
3+
4+
@dataclass
5+
class Animal:
6+
name: str
7+
family: str
8+
9+
10+
farm = {
11+
"house_guard": Animal("Bill", "Mammal"),
12+
"companion": Animal("Steve", "Reptile"),
13+
"retriever": Animal("Timmy", "Dinosaur"),
14+
"gate_guard": Animal("Pepe", "Insect"),
15+
}
16+
17+
18+
def sort_by_strength(animal_tuple):
19+
order = ["Dinosaur", "Reptile", "Mammal", "Insect"]
20+
return order.index(animal_tuple[1].family)
21+
22+
23+
print(dict(sorted(farm.items(), key=sort_by_strength)))

0 commit comments

Comments
 (0)