Commit 76137074 by Patryk Czarnik

policz wszystkie słowa - wersje dodatkowe

parent 38a6c97a
# W tej wersji:
# zamiana wszystkich słów na małe litery
# sortowanie alfabetyczne słów, zgodnie z localami
import re
pattern = re.compile(r'\w+')
slownik = {}
with open('pan_tadeusz.txt', mode='r', encoding='utf-8') as plik:
for linia in plik:
for slowo in re.findall(pattern, linia):
slowo = slowo.lower()
if slowo in slownik:
slownik[slowo] += 1
else:
slownik[slowo] = 1
# for slowo, ile in sorted(slownik.items()):
# print(slowo, ile)
import locale
locale.setlocale(locale.LC_COLLATE, 'pl_PL.utf8')
for slowo, ile in sorted(slownik.items(), key=lambda item: locale.strxfrm(item[0])):
print(slowo, ile)
# W tej wersji:
# * zamiast zwykłego słownika używamy defaultdict
# on działa tak, że gdy próbujemy odczytać wartość z klucza, który jeszcze nie istnieje,
# w tym momencie automatycznie wstawiana jest domyślna wartość
# * sortowanie wyników wg liczby wystąpień
import re
from collections import defaultdict
pattern = re.compile(r'\w+')
# mówimy, co ma być domyślną wartością → nie podaje się wartości 0, tylko podaje się sposób jej utworzenia
# w praktyce najczęściej podaje się nazwę typu wartości. Dla inta domyślną wartością jest 0 i dzięki temu to działa.
slownik = defaultdict(int)
with open('pan_tadeusz.txt', mode='r', encoding='utf-8') as plik:
for linia in plik:
for slowo in re.findall(pattern, linia):
slownik[slowo.lower()] += 1
for slowo, ile in sorted(slownik.items(), key=lambda item: item[1], reverse=True):
print(f'{slowo:>12} → {ile:4}')
# print('Najdłuższe słowo:', max(len(slowo) for slowo in slownik.keys()))
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment