我是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))
我该怎么做,另外我可以在没有使用循环的计数器库的情况下做到这一点?
答案 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})