| @ -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") | |||||