Страницы

Поиск по вопросам

среда, 29 января 2020 г.

Самый частый символ

#python #python_3x


Хочу сделать чтобы я вводил слово и мне писало символ который появляется
в слове наиболее часто. Не лезет в голову как можно сделать это. Пожалуйста помогите.
Например у нас есть слово: приоритет. Нам должно вывести, что наиболее частый символ
это и, т . Не нужно чтобы оно писало количество, а только выводило символ.
    


Ответы

Ответ 1



from collections import Counter word = 'приоритет' c = Counter(word) print(c.most_common(1)[0][0]) Т.к. метод most_common возвращает список самых частых значений (даже если мы запросили одно самое частое значение), то нужно взять первый элемент (для этого нужен первый [0]). Каждый элемент в этом списке - пара (элемент, количество), поэтому нужно взять первый элемент еще раз. Вообще, в слове "приоритет" есть 3 буквы, которые встречаются по два раза (р, и, т), выведет только одну из них (у меня вывело "р"). Вариант решения без использования Counter: word = 'приоритет' # Подсчитываем количество вхождений каждой буквы в слове c = dict() for letter in word: c[letter] = c.get(letter, 0) + 1 # .get(letter, 0) вернет значение по ключу letter или 0, если такого ключа нет print(c) # {'п': 1, 'р': 2, 'и': 2, 'о': 1, 'т': 2, 'е': 1} # Выводим ключ, которому соответствует наибольшее из значений # (точнее, один из таких ключей) print(max(c.items(), key=lambda item: item[1])[0]) # р

Ответ 2



Решение без использования модуля Counter: text = "приритет" #выбираем буквы letters = set(text) #считаем буквы count = [] for letter in letters: count.append((text.count(letter), letter)) count.sort(reverse=True) print (count) print(count[0][1]) вывести все буквы с одинаковым количеством вхождений, думаю, сам сможешь. а этот код выведет: [(2, 'т'), (2, 'р'), (2, 'и'), (1, 'п'), (1, 'е')] т Благодаря наставлению старших товарищей (см. примечание @gil9red), напишу более понятный для наметаного глаза вариант кода без Count: text = "приритет" #считаем буквы count = sorted([(text.count(letter), letter) for letter in set(text)], reverse=True) print (count) print(count[0][1]) Правда, изящно и почти по английски? просто читаешь.. "счетчик равен отсортированному по убыванию списку составленному для каждой буквы из набора букв исходного текста. Причем каждый элемент этого списка состоит из пары: (количество буквы в тексте, буква) Такой себе однострочный функциональный вариант...

Комментариев нет:

Отправить комментарий