我需要创建一个读取字符串并返回字典的函数,其中键是字符串中的单词,值是它们出现的次数。
这就是我的尝试:
def countWords(arg):
dic = {}
for i in agr:
if i in dic:
dic[i] += 1
else:
dic[i] = 1
return dic
仅计算一封信出现的次数。
我想先把每个单词分成一个列表的不同位置,但是我不知道怎么样,或者哪个是正确的方式去这里..
我该怎么办?
答案 0 :(得分:1)
见collections.Counter
。这通常被认为是解决此类问题的最佳方案。
from collections import Counter
def countWords(s):
return Counter(s.split())
如果您不想使用馆藏模块,可以使用try...except
块。
def countWords(s):
d = {}
for word in s.split():
try:
d[word] += 1
except KeyError:
d[word] = 1
return d
另一种方法是使用dict.get()
的可选默认参数。
def countWords(s):
d = {}
for word in s.split():
d[word] = d.get(word, 0) + 1
return d
如您所见,有许多不同的方法可以完成此任务。
答案 1 :(得分:1)
这是默认字典的完美案例:https://docs.python.org/2/library/collections.html#collections.defaultdict
import collections as co
def countWords(arg):
dd = co.defaultdict(int) # since we want counts we use int
for i in arg.split(): # split on whitespace
dd[i] += 1 # when a new key is encountered the default value is entered
return dd