Python ищет более простой способ сократить мой.casefold(). Count()

Мой код Python работает нормально, но код выглядит немного утомительно и грязно. Мне было интересно, есть ли более простой способ написать это. У меня есть текстовый файл, и я должен выяснить, можно ли найти буквы "aardvark" внутри строки.

if i.casefold().count('a') >= 3 and i.casefold().count('r') >= 2 and i.casefold().count('d') >= 1 and i.casefold().count('v') >= 1 and i.casefold().count('k') >=1:

2 ответа

Решение
if all(
 i.casefold().count(letter) >= 'aardvark'.count(letter)
 for letter in 'aardvark')

вроде глупое решение, но оно работает

Вот интерактивная демонстрация решения:

>>> i = 'this is a test'
>>> all(i.casefold().count(x) >= y for x,y in [('a',3), ('r',2), ('d', 1), ('v',1)])
False

>>> i = 'ardv'*4
>>> i
'ardvardvardvardv'

>>> all(i.casefold().count(x) >= y for x,y in [('a',3), ('r',2), ('d', 1), ('v',1)])
True
Другие вопросы по тегам