2011-08-01 1 views
0

英語の単語の2GB(およそ)サイズのファイルを作成するプログラムを作成しようとしています。そして、この2GBのファイルから、外部ソートを使用して単語の頻度を印刷しようとしています。外部ソート後には、カウント(周波数)だけを出力することができます巨大ファイル(2GB)で単語の頻度(1行に1つ)をカウントするにはどうすればよいですか?

+0

Pythonの答えだけが必要な場合、なぜJava、C++、Cおよびperlにタグを付けるのですか? – Charliemops

+0

この宿題はありますか? – NPE

答えて

3

Pythonには組み込み関数sortedがあり、iterableをソートします。しかしそれよりも優れているのは、バージョン2.7以上では、物の頻度を数えるための組み込みのコレクションがあります。あなたの大きなファイルは、1行に1つの単語を持っていると仮定すると、あなたが行うことができます:

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

これには数分かかります。

+0

なぜPythonを使用しないのですか? (外部ユーティリティはスピードが問題であれば良いかもしれません) – katrielalex

+1

私はPythonで初心者ですが、それは良い答えと思われますが、疑問があります。 – Charliemops

+2

@ TheCharliemopsそれは理由のために "カウンター"と呼ばれています。それは、それらを格納するのではなく、それに与えられたものを数えます。単語を繰り返すと、その単語のカウントが増加します。 –

関連する問題