Reputation: 867
I have a list :
['blabla', 'tata', 'baba.com', 'fafa', 'gmail', 'momo', 'blabla', 'blabla', 'zozo', 'zozo', 'momo']
I would like to calculate the frequency of each word and output the sorted result like this:
blabla : 3
momo : 2
fafa : 1
I have used counter but the output isn't like i want
import collections
l = ['blabla', 'tata', 'baba.com', 'fafa', 'gmail', 'momo', 'blabla', 'blabla', 'zozo', 'zozo', 'momo']
c = counter=collections.Counter(l)
print(c)
Output :
Counter({'blabla.com': 3, 'momo': 2 }]
How to remove the 'Counter' word from the output?
Upvotes: 1
Views: 82
Reputation: 32
You can also use list function
l = ['blabla', 'tata', 'baba.com', 'fafa', 'gmail', 'momo', 'blabla', 'blabla', 'zozo', 'zozo', 'momo']
print({x: l.count(x) for x in l})
output: {'blabla': 3, 'momo': 2, 'zozo': 2, 'gmail': 1, 'baba.com': 1, 'fafa': 1, 'tata': 1}
Upvotes: 0
Reputation: 51653
Almost there, you use the most_common([N]) method of Counter for this:
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
Output:
blabla: 3
momo: 2
zozo: 2
tata: 1
baba.com: 1
fafa: 1
gmail: 1
most_common()
returns you all (or top N) results in the Counter - as tuple(name, count)
Upvotes: 3