import string
import re
P = string.punctuation
d = dict()
s = 'Hi, we play on the Maldive beach on October the second.'
patt = f'[{P}]'
res = re.sub(patt, '', s)
res = res.split()
for i,v in enumerate(res):
if v not in d:
d[v] = [i,len(v), 1]
else:
d[v] = [i,len(v), d[v][2] +1]
d1 = sorted(d.items(), key =lambda x: [len(x[0]), -x[1][0]], reverse = True)
d2 = sorted(d.items(), key = lambda x: [x[1][2], -x[1][0]], reverse = True)
m = d1[0][1][1]
for k, v in d1:
if v[1] == m:
print(f'maxlen:{v[1]:<3}word:{k:<5}')
for k, v in d2:
print(f'{k:<10}{v[2]:->5}')
--result
maxlen:7 word:Maldive
maxlen:7 word:October
on ----2
the ----2
Hi ----1
we ----1
play ----1
Maldive ----1
beach ----1
October ----1
second ----1