1

私はこの辞書を次のように定義しています:

def train(features):
    model = collections.defaultdict(lambda: 1)
    for f in features:
        model[f] += 1
    return model

途中で、pickle を使用して、辞書をテキスト ファイルにダンプしたいと考えています。

f = open('dict.txt', 'wb')
pickle.dump(Nwords, f)

ただし、コードが機能せず、エラーが発生します。どうやらpickleうまくいかないので、モジュールレベルの関数を使用lambdaして定義する方がよいでしょう。私はすでにここmodelで答えを読んでいます

残念ながら、私は Python の経験がないので、これを行う方法が正確にはわかりません。私は試した:

def dd():
    return defaultdict(int)

def train(features):
##    model = defaultdict(lambda: 1)
    model = defaultdict(dd)
    for f in features:
        model[f] += 1
    return model 

次のエラーが表示されます。

TypeError: unsupported operand type(s) for +=: 'collections.defaultdict' and 'int'

それ以外return defaultdict(int)は、キーの最初の出現に常にゼロを割り当てますが、1 を割り当てたいのですが、これを修正する方法について何かアイデアはありますか?

4

1 に答える 1