2

これは私が文書の各単語を数えなければならないものです:

from collections import defaultdict
word_dict=defaultdict(int)

def count_words(newstring):
    words=newstring.lower().split()
    for word in words:
        word_dict[word]+=1

印刷するとword_dict、次の結果が得られました。

defaultdict(<type 'int'>, {'rate': 1, 'babo-free': 1, 'risk': 3, 'interest': 1})

total_count変数が6になるように、各カウントを追加する必要があります。

多くの人にとってこれは簡単すぎるかもしれませんが、初心者として、どこから始めればよいのかわかりません。

4

2 に答える 2

10

これは、他の辞書と同じ方法で実行できます。

>>> d = {'a': 1, 'b': 1, 'c': 3, 'd': 4}
>>> sum(d.values())
9

Python 2. *では、次を使用することもできます

>>> sum(d.itervalues())
9

これは新しいリストを作成しませんが、率直に言って、これがボトルネックになるのに十分な長さのリストはありそうにありません。そして、defaultdict同じように機能します:

>>> from collections import defaultdict
>>> d2 = defaultdict(int)
>>> d2.update(d)
>>> d2
defaultdict(<type 'int'>, {'a': 1, 'c': 3, 'b': 1, 'd': 4})
>>> sum(d2.values())
9

ちなみに、Python 2.7以降には、便利なCounterオブジェクトもあります。

>>> from collections import Counter
>>> Counter("a b A B B c".lower().split())
Counter({'b': 3, 'a': 2, 'c': 1})
>>> Counter("a b A B B c".lower().split()).most_common()
[('b', 3), ('a', 2), ('c', 1)]
>>> sum(Counter("a b A B B c".lower().split()).values())
6
于 2012-10-09T23:13:58.153 に答える
0

を使用iteritemsすると、キーと値のペアのリストを取得できます。これで、forループを使用して数値を合計できます。

例えば

sum = 0
for k,v in d.iteritems():
    sum += v
于 2012-10-09T23:13:44.440 に答える