Skip to content

Commit 7289faf

Browse files
committed
Including missed parts and commenting
1 parent 354cd4f commit 7289faf

File tree

6 files changed

+102
-59
lines changed

6 files changed

+102
-59
lines changed

sort-python-dictionary/basic_sort.py

Lines changed: 0 additions & 12 deletions
This file was deleted.

sort-python-dictionary/itemgetter_multiple.py

Lines changed: 0 additions & 12 deletions
This file was deleted.
Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,32 @@
11
data = {
2-
193: {"name": "John", "age": 30, "skills": {"python": 8, "javascript": 7}},
2+
193: {"name": "John", "age": 30, "skills": {"python": 8, "js": 7}},
33
209: {"name": "Bill", "age": 15, "skills": {"python": 6}},
4-
746: {"name": "Jane", "age": 58, "skills": {"javascript": 2, "python": 5}},
4+
746: {"name": "Jane", "age": 58, "skills": {"js": 2, "python": 5}},
55
109: {"name": "Jill", "age": 83, "skills": {"java": 10}},
66
984: {"name": "Jack", "age": 28, "skills": {"c": 8, "assembly": 7}},
77
765: {"name": "Penelope", "age": 76, "skills": {"python": 8, "go": 5}},
8-
598: {"name": "Sylvia", "age": 30, "skills": {"bash": 8, "java": 7}},
9-
483: {"name": "Anna", "age": 30, "skills": {"javascript": 10}},
10-
277: {
11-
"name": "Beatriz",
12-
"age": 30,
13-
"skills": {"python": 2, "javascript": 4},
14-
},
8+
598: {"name": "Sylvia", "age": 62, "skills": {"bash": 8, "java": 7}},
9+
483: {"name": "Anna", "age": 24, "skills": {"js": 10}},
10+
277: {"name": "Beatriz", "age": 26, "skills": {"python": 2, "js": 4}},
1511
}
1612

1713

18-
def getPython(item):
14+
def get_python(item):
1915
skills = item[1]["skills"]
16+
if "python" in skills:
17+
return skills["python"]
18+
else:
19+
# Return value that is equivalent to having no Python skill
20+
return 0
2021

21-
return skills["python"] if "python" in skills else 0
2222

23+
print(sorted(data.items(), key=get_python, reverse=True))
2324

24-
print(sorted(data.items(), key=getPython, reverse=True))
25+
# Doing the same thing with lambda function and conditional expression
26+
sorted(
27+
data.items(),
28+
key=lambda item: item[1]["skills"]["python"]
29+
if "python" in item[1]["skills"]
30+
else 0,
31+
reverse=True,
32+
)
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
# Sorting lists with the sorted() function
2+
numbers = [5, 3, 4, 3, 6, 7, 3, 2, 3, 4, 1]
3+
sorted(numbers)
4+
words = ["aa", "ab", "ac", "ba", "cb", "ca"]
5+
sorted(words)
6+
7+
8+
def select_second_character(word): # Sort key
9+
return word[1]
10+
11+
12+
sorted(words, key=select_second_character)
13+
14+
# Feeding dictionary directly into sorted() function
15+
people = {3: "Jim", 2: "Jack", 4: "Jane", 1: "Jill"}
16+
sorted(people) # Returns list of sorted keys (values gone)
17+
18+
# Getting dictionary views
19+
people = {3: "Jim", 2: "Jack", 4: "Jane", 1: "Jill"}
20+
people.items()
21+
22+
people = {3: "Jim", 2: "Jack", 4: "Jane", 1: "Jill"}
23+
view = people.items()
24+
people[2] = "Elvis"
25+
print(view) # View has been updated
26+
27+
# Feeding dictionary view directly into sorted() function
28+
people = {3: "Jim", 2: "Jack", 4: "Jane", 1: "Jill"}
29+
sorted(people.items()) # Sorts by key
30+
31+
# Using a sort key when sorting dictionary views
32+
people = {3: "Jim", 2: "Jack", 4: "Jane", 1: "Jill"}
33+
34+
35+
def value_getter(item): # Sort key
36+
return item[1]
37+
38+
39+
sorted(people.items(), key=value_getter)
40+
sorted(people.items(), key=lambda item: item[1]) # Sort key as lambda function
41+
42+
43+
# Building a dictionary from the list returned from the sorted() function
44+
sorted_people = sorted(people.items(), key=lambda item: item[1])
45+
46+
sorted_people_dict = {} # Using a for loop
47+
for key, value in sorted_people:
48+
sorted_people_dict[key] = value
49+
50+
sorted_people = sorted(people.items(), key=lambda item: item[1])
51+
sorted_people_dict = dict(sorted_people) # dictionary constructor
52+
53+
sorted_people_dict = { # dictionary comprehension that swaps keys and values
54+
value: key
55+
for key, value in sorted(people.items(), key=lambda item: item[1])
56+
}

sort-python-dictionary/sorting_objects.py

Lines changed: 0 additions & 23 deletions
This file was deleted.
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+
item = ("name", "Guido")
4+
5+
getter = itemgetter(0)
6+
getter(item) # Returns "name"
7+
8+
getter = itemgetter(1)
9+
getter(item) # Returns "Guido"
10+
11+
12+
fruit_inventory = [("banana", 5), ("orange", 15), ("apple", 3), ("kiwi", 0)]
13+
14+
# Sort by key
15+
sorted(fruit_inventory, key=itemgetter(0))
16+
17+
# Sort by value
18+
sorted(fruit_inventory, key=itemgetter(1))
19+
20+
# Raises IndexError
21+
# sorted(fruit_inventory, key=itemgetter(2))
22+
23+
24+
people = {3: "Jim", 2: "Jack", 4: "Jane", 1: "Jill"}
25+
26+
sorted(people.items(), key=itemgetter(1)) # Sort by value

0 commit comments

Comments
 (0)