2011-08-01 4 views
0

영어 단어 2GB (대략) 크기의 파일을 작성하는 프로그램을 작성하려고합니다. 그리고이 2GB 파일에서 외부 정렬을 사용하여 단어의 빈도를 인쇄하려고합니다. 외부 정렬 후 카운트 (빈도)를 인쇄 할 수 있습니다.거대한 파일 (2GB)에서 단어의 빈도를 한 줄당 하나씩 계산하려면 어떻게해야합니까?

+0

왜 파이썬 응답 만 원한다면 자바, C++, C 및 펄을 태그하고 있습니까? – Charliemops

+0

이 숙제가 있습니까? – NPE

답변

3

파이썬에는 반복 가능한 값을 정렬하는 내장 함수 sorted이 있습니다. 그러나 버전 2.7 이상에서는 사물의 빈도를 세는 내장형 컬렉션이 있습니다. 큰 파일에 한 줄에 한 단어가 있다고 가정하면 다음을 수행 할 수 있습니다.

from collections import Counter 
with open(<giant-dictionary>) as words: 
    counts = Counter(words) 

이 작업은 몇 분 정도 소요됩니다.

+0

왜 파이썬을 사용하지 않습니까? (외부 유틸리티는 속도가 _ 문제로 인해 문제가 될 수 있습니다.) – katrielalex

+1

파이썬에서는 초보자이지만 좋은 대답 인 것처럼 보이지만 의심의 여지가 있습니다.이 카운터는 반복되는 단어를 제거합니까? – Charliemops

+2

@ TheCharliemops 그것은 이유로 "카운터"라고합니다. 그것은 그것들을 저장하는 대신 그것으로 공급되는 것을 센다. 단어를 반복하면 해당 단어의 수가 증가합니다. –

관련 문제