2012-05-29 2 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}) 
관련 문제