str.count(a)
- лучшее решение для подсчета одного символа в строке. Но если вам нужно подсчитать больше символов, вам нужно будет прочитать всю строку столько раз, сколько символов вы хотите посчитать.
Лучший подход к этой работе:
from collections import defaultdict
text = 'Mary had a little lamb'
chars = defaultdict(int)
for char in text:
chars[char] += 1
Таким образом, у вас будет диктант, который возвращает количество вхождений каждой буквы в строке и 0
, если ее нет.
>>>chars['a']
4
>>>chars['x']
0
Для счетчика, нечувствительного к регистру, вы можете переопределить методы мутатора и метода доступа, используя подклассы defaultdict
(методы базового класса доступны только для чтения):
class CICounter(defaultdict):
def __getitem__(self, k):
return super().__getitem__(k.lower())
def __setitem__(self, k, v):
super().__setitem__(k.lower(), v)
chars = CICounter(int)
for char in text:
chars[char] += 1
>>>chars['a']
4
>>>chars['M']
2
>>>chars['x']
0