ErEcTuS
ErEcTuS

Reputation: 867

Calculate frequency in a list and output result in a specific format

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

Answers (2)

Om trivedi
Om trivedi

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

Patrick Artner
Patrick Artner

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

Related Questions