Pythonで与えられたファイルの文字数をカウントする

1247 ワード

Pythonでは、コレクションモジュールをコンテナデータ型として使用します.Pythonの汎用ビルトインコンテナ、dict、list、set、tupleの代替案を提供することで、特殊なコンテナデータ型を実装します.このモジュールは、カウンタとして知られているハッシュ可能なオブジェクトを数えるためのdict subclassを持っています.キーと値に制限なしで、カウンタクラス自体は辞書サブクラスとみなされます.値はカウントを表す数値であることを意図していますが、valueフィールド内に何かを格納します.ゼロまたは負のカウントを含む、このカウントは任意の整数値を許可されます.カウンタークラスは他の言語のバッグやマルチセットに似ています.
指定したファイルの文字数をカウントする
全然言葉を割らない文字列を直接カウンタに渡すと文字ごとのカウントが更新されます.入力ファイルのフラグ“r”と出力ファイルのフラグ“w”を使用します.また、最初にすべてのカウントを収集することができますし、出力ファイルを曲げて書くだけです.
インポートカウンタから
def count_letters(in_filename, out_filename):
    counts = Counter()
    with open(in_filename, "r") as in_file:
        for chunk in iter(lambda: in_file.read(8196), ''):
            counts.update(chunk)
    with open(out_filename, "w") as out_file:
        for letter, count in counts.iteritems():
            out_file.write('{}:{}\n'.format(letter, count)```


It should be note that, the inputfile is processed in 8kb chunks instead of in one go; you'll adjust the block size (preferably in powers of 2) to maximise throughput.

If you would like your output file to be sorted by frequency (descending), then you could also use .most_common() rather than .iteritems().