2015-01-22 15 views
1
dct = {} 
with open("grades_single.txt","r") as g: 
    content = g.readlines()[1].strip('\n') 
    for item in content: 
     dct[item] = content.count(item) 
     LetterA = max(dct.values()) 
print(dct) 

저는 파이썬에 매우 익숙해서 실례합니다. 이것은 지금까지 내 코드이며 작동하지만 의도 한대로는 아닙니다. 나는 각 문자로 수학 함수를 할 수 있도록 새 줄에 특정 문자의 빈도를 계산하려고합니다. 프로그램은 모든 글자 수를 계산하고 인쇄하지만 IE 7As, 새 fuction 4Bs 등 각 글자를 하나씩 계산할 수 있기를 원합니다.파이썬 카운트/초보자 카운트

현재 프로그램은 한 문자로 인쇄하고 있지만 예 나는 각 편지를 하나 하나씩 일할 수 있도록 그들을 나누고 싶다. { 'A': 9, 'C': 12, 'B': 19, 'E': 4, 'D': 5, 'F': 1}

빈도를 세는 방법을 아는 사람이 있습니까? 편지 하나 하나?

ADCBCBBBADEBCCBADBBBCDCCBEDCBACCFEABBCBBBCCEAABCBB 내가 계산하고 싶습니다 무엇

예.

답변

7
>>> from collections import Counter 
>>> s = "ADCBCBBBADEBCCBADBBBCDCCBEDCBACCFEABBCBBBCCEAABCBB" 
>>> Counter(s) 
Counter({'B': 19, 'C': 14, 'A': 7, 'D': 5, 'E': 4, 'F': 1}) 
+0

사전을 정말로 필요로한다면'dict (Counter (s)) '라고하십시오. –

+2

@Reticality'Counter'는'dict'의 서브 클래스입니다. – augurar

1

collections.Counter은 깨끗하지만, 당신이 급하게 인 경우에, 당신은 반복의 모든 요소와 사전 yousrelf로를 배치 할 수 있습니다.

s = 'ADCBCBBBADEBCCBADBBBCDCCBEDCBACCFEABBCBBBCCEAABCBB' 
grades = {} 
for letter in s: 
    grades[letter] = grades.get(letter, 0) + 1 
+1

나는 이것이 'Counter'방법보다 5 줄 더 많으므로 서둘러서 'Counter'를 쓸 것이라고 말하고 싶습니다. – SethMMorton

+0

'Counter '가 존재한다는 것을 몰랐으므로이 종류를 입력하십시오. API의 참조를 찾는 것보다 훨씬 빠르게 명령을 내 렸습니다. 하지만 요점이 있다고 생각합니다. – Makoto

+0

좋은 전화 @augurar, 정식 지적했다. – Makoto