2012-05-29 3 views
17

Это вопрос из pyschools.Подсчет частоты каждой буквы в строке

Я понял это правильно, но я предполагаю, что будет более простой метод. Это самый простой способ сделать это?

def countLetters(word): 
    letterdict={} 
    for letter in word: 
     letterdict[letter] = 0 
    for letter in word: 
     letterdict[letter] += 1 
    return letterdict 

Это должно выглядеть примерно так:

>>> countLetters('google') 
{'e': 1, 'g': 2, 'l': 1, 'o': 2} 

ответ

47

В 2.7+:

import collections 
letters = collections.Counter('google') 

Ранее (2.5+, это древний сейчас):

import collections 
letters = collections.defaultdict(int) 
for letter in word: 
    letters[letter] += 1 
+0

Какова временная сложность этой операции? –

17
>>> import collections 
>>> print collections.Counter("google") 
Counter({'o': 2, 'g': 2, 'e': 1, 'l': 1})