2012-05-29 19 views
17

Esta es una pregunta de pyschools.Contando la frecuencia de cada letra en una cadena

Lo hice bien, pero supongo que habría un método más simple. ¿Es esta la manera más simple de hacer esto?

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

Esto debe ser algo como esto:

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

Respuesta

47

En 2.7+:

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

Anteriormente (2.5+, eso es antiguo por ahora):

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

¿Cuál es la complejidad de tiempo de esta operación? –

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