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 回答