edit : Как указано в комментариях agf и другом ответе, существует словарь для Python 2.7 или новее.
def countChar(word):
return dict((item, word.count(item)) for item in set(word))
>>> countChar('google')
{'e': 1, 'g': 2, 'o': 2, 'l': 1}
>>> countChar('apple')
{'a': 1, 'p': 2, 'e': 1, 'l': 1}
Нет необходимости преобразовывать word
в список или отсортировать его перед тем, как превратить его в набор, так как строки являются итеративными:
>>> set('google')
set(['e', 'o', 'g', 'l'])
Нет словарного понимания для Python 2.6 и ниже, возможно, именно поэтому вы видите синтаксическую ошибку.Альтернативой является создание списка кортежей ключ-значение с использованием понимания или генератора и передача его во встроенный dict()
.