这是我必须计算文档中每个单词的内容:
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。
我想这对你们很多人来说可能太容易了,但作为初学者,我不知道从哪里开始。
答案 0 :(得分:9)
您可以像使用任何词典一样执行此操作:
>>> 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
答案 1 :(得分:0)
使用iteritems
,您可以获得键值对列表。有了它,您可以使用for循环将数字相加。
例如
sum = 0
for k,v in d.iteritems():
sum += v