0

私は任意の.txtファイルのハフマンコーディングを行っているので、最初にこのテキストファイルを分析する必要があります。私はそれを読んでから分析する必要があります。テーブルのような「出口」が必要です。


手紙| 頻度(同じ後者が何回繰り返されるか)| ハフマンコード(これは後で来るでしょう)


私は始めました:

 f = open('test.txt', 'r')    #open test.tx
 for lines in f:
     print lines          #to ensure if all work...

ファイルからの読み取り文字をアルファベット順に並べ替えるにはどうすればよいですか。

with open("test.txt") as f_in:
    for line in f_in:
        for char in line:
            frequencies[char] += 1

???どうもありがとう


Well I tried like this:
frequencies = collections.defaultdict(int)
with open("test.txt") as f_in:
    for line in f_in:
        for char in line:
            frequencies[char] += 1


 frequencies = [(count, char) for char, count in frequencies.iteritems()]
 frequencies.sort(key=operator.itemgetter(1))

しかし、コンパイラは私に「エラー」を返しますここにコードを入力してください

周波数で終わるのではなく、forループでこのアルファベット順が必要です...

4

3 に答える 3

2

頻度の表を取得するには、を使用しdefaultdictます。これは、データを1回だけ繰り返します。

import collections
import operator

frequencies = collections.defaultdict(int)
with open(filename) as f_in:
    for line in f_in:
        for char in line:
            frequencies[char] += 1


frequencies = [(count, char) for char, count in frequencies.iteritems()]
frequencies.sort(key=operator.itemgetter(1))
于 2010-12-05T00:47:00.460 に答える
0
with open('test.txt') as f: data = f.read()
table = dict((c, data.count(c)) for c in set(data))
于 2010-12-05T00:36:39.550 に答える