Класс счетчика Python принимает в качестве параметра объект Iterable.Поскольку вы даете ему объект String:
Counter('like baby baby baby ohhh baby baby like nooo')
, он будет перебирать каждый символ строки и генерировать счетчик для каждой из различных букв.Вот почему вы получаете
Counter({'b': 10, ' ': 8, 'a': 5, 'y': 5, 'o': 4, 'h': 3, 'l': 2, 'i': 2, 'k': 2, 'e': 2, 'n': 1})
обратно из класса.Один из вариантов - передать список в Counter.Таким образом, класс Counter будет выполнять итерацию каждого из элементов списка и создавать ожидаемое количество.
Counter(['like', 'baby', 'baby', 'baby', 'ohhh', 'baby', 'baby', 'like', 'nooo'])
Этого также можно добиться, просто разбив строку на слова, используя метод split:
Counter('like baby baby baby ohhh baby baby like nooo'.split())
Выход
Counter({'baby': 5, 'like': 2, 'ohhh': 1, 'nooo': 1})