映射/计数器,Python



我是新来的计数器和映射功能。我正在写一个函数,它接受一个字符串,计算不同的单词,并在字典中输出单词和它们出现的次数。

我对地图和计数器函数有一些疑问。我知道我下面的代码工作,但我不相信我真的明白我需要将我的输入字符串分配给"strs",并在map函数中使用它。

我也不确定如何打印没有"counter"这个词的字典:

def wordCount(inputString):
    from collections import Counter
    strs = inputString
    c = Counter(map(str.lower,strs.split()))
    print c
inputString = 'I like pizza, beer, and more pizza'
wordCount(inputString)

尝试使用Counter.items(),它返回(element, count)元组的列表并遍历该列表并打印每个元素。

您不需要将输入字符串放在strs中,我认为它没有任何好处。

同样,要将计数器打印为字典,不使用Counter,请使用dict(counter),示例-

>>> from collections import Counter
>>> l = [1,2,3,4,1,2,3,4,5]
>>> x= Counter(l)
>>> print(dict(x))
{1: 2, 2: 2, 3: 2, 4: 2, 5: 1}

用你的例子演示-

>>> def wordCount(inputString):
...     from collections import Counter
...     c = Counter(map(str.lower,inputString.split()))
...     print(dict(c))
...
>>> inputString = 'I like pizza, beer, and more pizza'
>>> wordCount(inputString)
{'more': 1, 'pizza,': 1, 'like': 1, 'i': 1, 'pizza': 1, 'and': 1, 'beer,': 1}

这是另一种方法:

words = 'I like pizza, beer, and more pizza'.split()
d = {}
for word in words:
    word = word.strip(',')
    d[word] = d.get(word, 0) +1
print d
输出:

{'and': 1, 'like': 1, 'I': 1, 'beer': 1, 'pizza': 2, 'more': 1}

我去掉了逗号,假设您想计算没有逗号的单词。

最新更新