我是计数器和映射功能的新手。我正在编写一个函数,它接受一个字符串,并在字典中计算不同的单词和输出单词以及它们出现的次数。
我对地图和计数器功能有一些疑问。我知道我的以下代码有效,但我不确定我真的理解我需要将输入字符串分配给" 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)
答案 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}
我删除了逗号,假设您想要计算没有逗号的单词。