diff --git a/python_3_oop/chapter06/lists.py b/python_3_oop/chapter06/lists.py new file mode 100644 index 0000000..ff519ef --- /dev/null +++ b/python_3_oop/chapter06/lists.py @@ -0,0 +1,57 @@ +import string + + +# list with all valid characters +CHARACTERS = list(string.ascii_letters) + [" ", ",", "'", "?", "Ä", "ö"] + + +def letter_frequency(sentence): + # init a list of tuples for all valid characters + frequencies = [(c, 0) for c in CHARACTERS] + for letter in sentence: + # find index of selected character + index = CHARACTERS.index(letter) + # increment counter of selected character + frequencies[index] = (letter, frequencies[index][1] + 1) + return frequencies + +print(letter_frequency("Hello world, what's going on? Äötsch")) + + +# sorting self constructed classes by overriding their __lt__ method + +class WeirdSortee: + def __init__(self, string, number, sort_num): + self.string = string + self.number = number + self.sort_num = sort_num + + def __lt__(self, object): + if self.sort_num: + return self.number < object.number + return self.string < object.string + + def __repr__(self): + return "{}:{}".format(self.string, self.number) + + +a = WeirdSortee('a', 4, True) +b = WeirdSortee('b', 3, True) +c = WeirdSortee('c', 2, True) +d = WeirdSortee('d', 1, True) +l = [a, d, c, b] +print(str(l) + " unsorted") +l.sort() +print(str(l) + " sorted by number") +for i in l: + i.sort_num = False +l.sort() +print(str(l) + " sorted by character") + + +# using the 'key' argument of the sort() method +x = [(1, 'c'), (2, 'a'), (3, 'b')] +x.sort() +print(str(x) + " sorted by 1st item") +x.sort(key=lambda i: i[1]) +print(str(x) + " sorted by 2nd item") \ No newline at end of file