映射/计数器,Python

时间:2015-07-27 01:06:35

标签: python function dictionary count

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

我对地图和计数器功能有一些疑问。我知道我的以下代码有效,但我不确定我真的理解我需要将输入字符串分配给" strs"并在地图功能中使用它。

我也不确定如何在没有“#34; 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)

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

您不需要将输入字符串放在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}

答案 2 :(得分:-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}

我删除了逗号,假设您想要计算没有逗号的单词。