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