我有一个列表:
['blabla', 'tata', 'baba.com', 'fafa', 'gmail', 'momo', 'blabla', 'blabla', 'zozo', 'zozo', 'momo']
我想计算每个单词的频率并输出排序结果,如下所示:
blabla:3
o:2
fafa:1
我已经使用了计数器,但是输出却不是我想要的
import collections
l = ['blabla', 'tata', 'baba.com', 'fafa', 'gmail', 'momo', 'blabla', 'blabla', 'zozo', 'zozo', 'momo']
c = counter=collections.Counter(l)
print(c)
输出:
Counter({''blabla.com':3,'momo':2}]
如何从输出中删除“反”字?
答案 0 :(得分:3)
几乎在此处,您使用most_common([N])的Counter方法:
from collections import Counter
l = ['blabla', 'tata', 'baba.com', 'fafa', 'gmail', 'momo',
'blabla', 'blabla', 'zozo', 'zozo', 'momo']
c = Counter(l)
for item,count in c.most_common(): # tuples
print (f"{item}: {count}") # "{}: {}".format(item,count) for lower 3.6
输出:
blabla: 3
momo: 2
zozo: 2
tata: 1
baba.com: 1
fafa: 1
gmail: 1
most_common()
会将您所有(或前N个)结果返回给计数器-为tuple(name, count)
答案 1 :(得分:0)
您还可以使用列表功能
l = ['blabla', 'tata', 'baba.com', 'fafa', 'gmail', 'momo', 'blabla', 'blabla', 'zozo', 'zozo', 'momo']
print({x: l.count(x) for x in l})
输出: {'blabla':3,'momo':2,'zozo':2,'gmail':1,'baba.com':1,'fafa':1,'tata':1}