
Имеется строка из файла, и нужно найти 3 самые частоповторяющиеся элементы в этой строке. Вначале я думал сделать из строки список и применить метод sort() или sorted() и в значение key= поставить функцию лямбду, использующую count(), но не получилось. Теперь я решил сделать по другому и использовать цикл for для строки, но тоже что то не получается. Если знаете, то скажите, как список с помощью лямбды отсортировать, чтобы найти 3 самых частоповторяющихся элемента и еще как код который внизу написан исправить.
def fdx_1 (): with open('tecst.txt') as o: nom = [] pe = o.read() for i in range(len(pe)): try: if pe.count(pe[i]) > pe.count(pe[i + 1]): nom.append(pe[i]) except IndexError: break return nom
2 Answers


Составляешь хистограмму- карту (dict) где ключом будут элементы списка а значением их количество

Чтобы найти три самых частовстречающихся символа (Unicode codepoint) в файле, можно collections.Counter
использовать:
#!/usr/bin/env python3 from collections import Counter from operator import itemgetter with open('input.txt') as file: counter = Counter(char for line in file for char in line) print(*map(itemgetter(0), counter.most_common(3))) # winners