Python:字典和字数统计

时间:2016-01-07 14:08:57

标签: python dictionary

我需要创建一个读取字符串并返回字典的函数,其中键是字符串中的单词,值是它们出现的次数。

这就是我的尝试:

    def countWords(arg):
        dic = {}
        for i in agr:
            if i in dic:
                dic[i] += 1
            else:
                dic[i] = 1
        return dic

仅计算一封信出现的次数。

我想先把每个单词分成一个列表的不同位置,但是我不知道怎么样,或者哪个是正确的方式去这里..

我该怎么办?

2 个答案:

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