2015-02-04 14 views
1

사전에 문자열의 일부를 저장하는 방법내가 가진 예를 들어

from collections import Counter 
cnt = Counter() 
    text = 'CTGGAT' 
    def freqWords(text, k): 
     for i in text: 
      cnt [i] += 1 
     print cnt 

출력 : 카운터 ({ 'A': 10, 'C': 9, 'T'8 ' G ': 4})

좋은 사전을 반환하지만, 항목을 k 값으로 저장하고 싶습니다. 마찬가지로 k = 2이면 DICK는 CT, TG, GG, GA, AT의 값으로 채워집니다. k = 3이면 : CTG, TGG, GGA, GAT.

답변

0

for i in texttext자를 반복합니다. 이 같은

def freqWords(text, k): 
    return Counter(text[i:i+k] for i in xrange(len(text) - k)) 

작품 :

freqWords('CTGGAT', 2) 
# Counter({'GG': 1, 'TG': 1, 'GA': 1, 'CT': 1}) 
+1

, 최고 간결하고 우아한 하나 라이너 당신은 k 마이너스 text의 길이에 걸쳐 반복하고 text의 문자열을해야합니다. 이제는 하위 문자열의 힘을 간과해서는 안됩니다. – deedle