2012-06-11 5 views
2

필자는 문자, 단어 및 상대 빈도 등 모든 종류의 통계를 포함하는 Python 클래스에 대해 아주 간단한 숙제 문제를 수행하고 있습니다. 텍스트의 문자열. 텍스트의 모든 고유 단어 목록을 사용 된 횟수만큼 가져옵니다. 이 때문에 입문 과정이며 나는 매우 제한 파이썬의 지식 (또는 그 문제에 대한 모든 언어)가있는 경우에만 다음 코드로 올 :파이썬 : 고유 한 단어와 그 빈도가 내림차순으로

for k in (""",.’?/!":;«»"""): 
    text=text.replace(k,"") 
text=text.split() 
list1=[(text.count(text[n]),text[n]) for n in range(0,len(text))] 
for item in sorted(list1, reverse=True): 
    print("%s : %s" % (item[1], item[0])) 

이 불행하게도 텍스트의 각 단어를 출력합니다 (출현 순서대로), 그 빈도 n, n 번이 뒤 따른다. 분명히 이것은 매우 쓸모가 없으며, 각 단어를이 목록에 한 번만 표시하도록 작성한 다음, 내림차순으로 코드를 작성하여 멋진 코드를 추가 할 수 있는지 궁금합니다. 이와 같은 다른 모든 질문은 우리가 배운 적이없는 많은 코드를 사용하는 것을 보았 기 때문에 대답은 상대적으로 간단해야한다고 생각합니다.

+0

'주파수'를 정렬하기 위해'정렬 된 (..) '이라고 어떻게 생각한다고 생각하십니까? – SuperSaiyan

+0

사전에 미리 익숙하십니까 (사전, {})? 하나를 사용하여 단어를 출현 횟수와 연관시킬 수 있습니다. 마르틴 (Martijn)이 시사 하듯이 카운터는 전문화 된 사전입니다. –

+0

또한보십시오 : http://stackoverflow.com/questions/4088265/word-frequency-count-using-python – BioGeek

답변

6

collections.Counter을 살펴보십시오. 이 단어를 사용하여 단어 빈도를 계산하면 most_common 방법을 사용하여 정렬 된 순서로 목록을 인쇄하는 데 도움이됩니다.

(예제 코드는 homework question이므로 일부는해야합니다.)

+2

아, 나는 이미 예제 코드를 작성하고 있었다. 하지만 [[태그 : 숙제]] 태그를 사용하면이 방법이 가장 좋은 방법 일 것입니다. –

+0

환상적입니다. 사전을 사용해야한다면 확실하지 않지만 카운터는 확실히 내가 찾고있는 것입니다. 고맙습니다. –

관련 문제