1

私はpythonが初めてで、辞書を使用して簡単な単語カウンターを作成しようとしています。次のコードが機能しない理由を知りたいです。

while word != None:
      wordObject = Word()
      wordObject.setWord(word)
      if dictionary.has_key(wordObject.getWord():
            setCount = dictionary[wordObject.getWord()]
            setCount.setCount()

これをそのままにしておくと、if ステートメントに入ることはありません。キー値を has key メソッドに入れると、ステートメントに入り、setCount 変数に無効な構文があると言います。その変数を、作成した辞書のキー値に格納されているオブジェクトに設定し、setCount メソッドで単語数を増やしようとしています。ありがとう。

4

2 に答える 2

1

カウントに使用collections.Counterします (Python 2.7+)。たとえば、単語のリストを数えたい場合は、次のようにします。

from collections import Counter

words = ['stack', 'overflow', 'stack', 'exchange']
counter = Counter(words)

print counter

結果:

Counter({'stack': 2, 'overflow': 1, 'exchange': 1})

ACounterは、次のようないくつかの便利なメソッドを追加した単なる辞書であり、most_common([n])存在しないキーを取得しようとするとゼロを返します。したがって、Python < 2.7 を使用している場合は、サブクラス化することで独自のものを簡単に実装できますdict

于 2012-10-06T19:43:41.483 に答える
0

コード全体を見ることはできませんが、ローカル変数を誤って使用しているメソッドsetCountを持っているに違いないと予測できます。wordObjectに変更するとwordObject.setCount()、それ以外の場合は簡単に役立つ場合があります

count = 0
while word != None:
      wordObject = Word()
      wordObject.setWord(word)
      if dictionary.has_key(wordObject.getWord():
            setCount=dictionary[wordObject.getWord()]
            count += 1

カウントを保存するには十分です。

于 2012-10-06T19:38:04.020 に答える