如何使用python中的计数器库计算唯一单词?

时间:2019-05-04 22:45:26

标签: python counter

我是python的新手,并尝试了各种库

from collections import Counter
print(Counter('like baby baby baby ohhh baby baby like nooo'))

当我打印此内容时,我收到的输出是:

Counter({'b': 10, ' ': 8, 'a': 5, 'y': 5, 'o': 4, 'h': 3, 'l': 2, 'i': 2, 'k': 2, 'e': 2, 'n': 1})

但是我想找到唯一单词的数量:

#output example
({'like': 2, 'baby': 5, 'ohhh': 1, 'nooo': 1}, ('baby', 5))

我该怎么做,另外我可以在没有使用循环的计数器库的情况下做到这一点?

3 个答案:

答案 0 :(得分:2)

使用collections.counter,首先应该将字符串拆分成类似words = 'like baby baby ohhh so forth'.split()的单词 然后将words变量输入计数器。

是的,您可以在没有集合模块(计数器对象)的情况下进行操作。有几种方法可以做到这一点。 其中之一,可能不是最有效的之一:

words = 'like baby baby ohhh so forth'.split()
unique_words = set(words)  # converting to set gets rid of duplicates
wordcount ={}  # an epmty dict
for word in unique_words:
    wordcount[word]=0  # set zero counter for each of the words
for word in words:
    wordcount[word]+= 1  # for each occurrence of a word in the list made fro original string, find that key in dict and increment by 1
print(wordcount)

答案 1 :(得分:0)

尝试一下:

string = 'like baby baby baby ohhh baby baby like nooo'
words = string.split()
result = dict()

for w in words:
    if result.get(w) == None:
        result[w] = 1
    else:
        result[w] += 1

for w in result:
    print(w + ' -- ' + str(result[w]))

答案 2 :(得分:0)

python Counter类将Iterable对象作为参数。当您给它一个String对象时:

Counter('like baby baby baby ohhh baby baby like nooo')

它将遍历字符串的每个字符并为每个不同的字母生成一个计数。这就是为什么您要收到

Counter({'b': 10, ' ': 8, 'a': 5, 'y': 5, 'o': 4, 'h': 3, 'l': 2, 'i': 2, 'k': 2, 'e': 2, 'n': 1})

从班级回来。一种选择是将列表传递给Counter。这样,Counter类将迭代每个列表元素并创建您期望的计数。

Counter(['like', 'baby', 'baby', 'baby', 'ohhh', 'baby', 'baby', 'like', 'nooo'])

也可以通过使用split方法将字符串分成单词来简单地实现:

Counter('like baby baby baby ohhh baby baby like nooo'.split())

输出

Counter({'baby': 5, 'like': 2, 'ohhh': 1, 'nooo': 1})