Используя словарное понимание, чтобы найти гласные в строке?

Если предположить, S = "Tea Lemon CoffEE cAke".lower()

    { x:y.count('aeoiu') for x in S.split() for y in 'aeoiu' if y in 'aeoiu' }

выход этого:

    {'cake': 0, 'tea': 0, 'lemon': 0, 'coffee': 0}

Почему это дает мне 0, а не количество гласных в каждом слове? Я новичок в Python, и я был бы признателен за некоторые советы. Совершенно не ищу прямых ответов.

1 ответ

Решение

Я думаю, что вы хотите сделать это:

{ x: sum(x.count(y) for y in 'aeoiu') for x in S.split() }

Какие выводы:

{'coffee': 3, 'cake': 2, 'lemon': 2, 'tea': 2}

Ваш код считал, сколько раз встречается строка 'aeoiu' y, который всегда равен нулю. Также обратите внимание, что for y in 'aeoiu' if y in 'aeoiu' избыточно, вам не нужно if,

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