Что нужно сделать
Мы уже писали программу для лингвистов, которая получала на вход текст и считала, сколько раз в строке встречается каждый символ. Теперь задача немного поменялась: максимальную частоту выводить не нужно, однако необходимо написать функцию, которая будет инвертировать полученный словарь. То есть в качестве ключа будет частота, а в качестве значения — список символов с этой частотой. Реализуйте такую программу.
Пример:
Введите текст: здесь что-то написано
Оригинальный словарь частот:
: 2
- : 1
З : 1
а : 2
д : 1
е : 1
и : 1
н : 2
о : 3
п : 1
с : 2
т : 2
ч : 1
ь : 1
Инвертированный словарь частот:
1 : ['З', 'д', 'е', 'ь', 'ч', '-', 'п', 'и']
2 : ['с', ' ', 'т', 'н', 'а']
3 : ['о']
Что оценивается
- Результат вычислений корректен.
- input содержит корректные приглашения для ввода.
- Формат вывода соответствует примеру.
- Основной функционал описан в отдельных функциях.
- Переменные и функции имеют значащие имена, не только a, b, c, d
def inversdict(text, freq_dict):
invert_dict = {}
for key in freq_dict.values():
if key not in invert_dict:
tempdict = {key: []}
invert_dict.update(tempdict)
for symb in text:
if symb in freq_dict:
values = freq_dict[symb]
if symb not in invert_dict[values]:
invert_dict[values] += symb
print(f'\nИнвертированный словарь:')
for k, v in sorted(invert_dict.items()):
print(k, ': ', v)
text = input('Введите текст: ').lower()
freq_dict = dict()
for symb in text:
if symb not in freq_dict:
freq_dict[symb] = 1
else:
freq_dict[symb] += 1
print('Оригинальный словарь частот: ')
for k, v in sorted(freq_dict.items()):
print(k, ':', v)