Как посчитать букву в слове на питоне?

Мне нужно посчитать, сколько точных букв в слове. Например, мне нужно посчитать букву «i» в этом слове. И мне нужно найти, в каком слове больше всего буквы «i».


list = ['box', 'computer', 'sheep', 'family', 'illegal', 'bubble', 'lamp', 'circuit', 'building', 'plant', 'these', 'cup']
def fgv(list):
    counter= 0
    maximal = 0
    word= "x"
    for e in list:
        counter = 0
        if e.__contains__("i"):
            for i in range (len(e)):
                if e[i] == "i":
                    couner += 1
        if counter < maximal:
            maximal = counter
            word = e
    return(word)                   
print(f"{fgv(list)}")
[w.count('i') for w in list][0, 0, 0, 1, 1, 0, 0, 2, 2, 0, 0, 0]
Klaus D. 02.07.2023 16:29

В python у строк есть метод count(), который, кажется, именно то, что вы ищете,

quamrana 02.07.2023 16:29
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
2
58
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий
def count_letter(list):
    counter = 0
    maximal = 0
    word = ""
    for e in list:
        counter = e.count("i")
        if counter > maximal:
            maximal = counter
            word = e
    return word

word_list = ['box', 'computer', 'sheep', 'family', 'illegal', 'bubble', 'lamp', 'circuit', 'building', 'plant', 'these', 'cup']
print(count_letter(word_list))

попробуйте этот код

Это печатает только первое вхождение единицы с максимальным количеством i, если есть ничья. Не обязательно неправильно, я просто указываю на это.

juanpethes 02.07.2023 16:31

О, я вижу, спасибо за вашу помощь.

cofee_and_coding 02.07.2023 16:42

Добро пожаловать в Stack Overflow! Вы опубликовали 9 ответов за последние 24 часа, и большинство из них либо в основном представляют собой код без пояснений, либо написаны (полностью или частично) ИИ (например, ChatGPT) или и тем, и другим. Предупреждение о том, что публикация контента, созданного искусственным интеллектом, здесь запрещена. Если вы использовали инструмент ИИ, чтобы помочь с каким-либо ответом, я бы посоветовал вам удалить его. Для ответов, в которых вы не использовали ИИ, имейте в виду, что предоставление дополнительного контекста относительно того, почему и / или как ваш код отвечает на вопрос, повышает его долгосрочную ценность.

NotTheDr01ds 02.07.2023 17:46

Читатели должны тщательно и критически рассмотреть этот ответ, поскольку информация, сгенерированная ИИ, часто содержит фундаментальные ошибки и дезинформацию. Если вы наблюдаете проблемы с качеством и/или у вас есть основания полагать, что этот ответ был сгенерирован искусственным интеллектом, пожалуйста, оставьте соответствующий отзыв.

NotTheDr01ds 02.07.2023 17:46

Это плохой совет. 1) переменная с именем list - нет-нет. 2) Если входной список пуст, возвращаемое значение будет пустой строкой. Но в списке не было пустой строки! 3) Он будет возвращать только первое наблюдаемое слово, соответствующее условию - их может быть несколько

DarkKnight 02.07.2023 18:04

Если вас интересует только одно (первое) слово с наибольшим количеством i в случае ничьей, то может быть желателен этот функциональный однострочник:

lst = ['box', 'computer', 'sheep', 'family', 'illegal', 'bubble', 'lamp', 'circuit', 'building', 'plant', 'these', 'cup']

print(max(lst, key=lambda x: x.count("i")))

@juanpethes рассмотрите возможность сохранения результата word.count('i') для каждого слова и повторения zip lst и word_counts в вашей окончательной композиции списка.

Adam Smith 02.07.2023 18:17

Сейчас я сделал подход со словарем, который эффективно сохраняет word.count('i') для каждого слова. Не стесняйтесь оставлять отзывы об этом подходе.

juanpethes 02.07.2023 18:21

Ой, извини. Не хотел этого делать - теперь я храню только то, что я однозначно предоставил сейчас. А также не обвиняйте меня в копировании. Я даже не посмотрел на твой ответ.

juanpethes 02.07.2023 18:23

Если вы считаете, что словари могут быть введены в целые числа, то как насчет:

_list = ['box', 'computer', 'sheep', 'family', 'illegal', 'bubble', 'lamp', 'circuit', 'building', 'plant', 'these', 'cup']

def get_count(list_of_words: list[str], letter: str) -> list[str]|None:
    if list_of_words and len(letter) == 1:
        d = {}
        for word in list_of_words:
            d.setdefault(word.count(letter), []).append(word)
        return d[max(d)]
    
print(get_count(_list, 'i'))

Выход:

['circuit', 'building']

Еще один подход, который делает слишком много работы для вашей проблемы, но демонстрирует объект collections.Counter stdlib, который очень полезен для множества других приложений!

from collections import Counter

words = ['box', 'computer', 'sheep', 'family', 'illegal', 'bubble', 'lamp', 'circuit', 'building', 'plant', 'these', 'cup']

word_counts = [Counter(word) for word in words]

# word_counts is now a list of Counter objects, which each look a little bit
# like {"b": 1, "o": 1, "x": 1} for box
# or {"i": 1, "l": 3, "e": 1, "g": 1, "a": 1} for illegal

# now we'll get the index for the word with the most "i's"
idx_max_by_i = max(enumerate(word_counts), key=lambda pair: pair[1]['i'])[0]

# and convert that back to the word itself by indexing into the words list
result = words[idx_max_by_i]

Есть определенно лучшие способы сделать это, но я подумал, что было бы полезно показать, на что способен Counter. Обратите внимание на его более мощные методы, такие как most_common(n), которые показывают наиболее распространенное количество N элементов, или elements, которые возвращают «развернутый» вид элементов в счетчике (например, Counter('sheep').elements() создает что-то вроде "eehps")

Adam Smith 02.07.2023 18:15

Другие вопросы по теме