How to count the frequency of the elements in an unordered list? How to count the frequency of the elements in an unordered list? python python

# How to count the frequency of the elements in an unordered list?

In Python 2.7 (or newer), you can use `collections.Counter`:

``import collectionsa = [1,1,1,1,2,2,2,2,3,3,4,5,5]counter=collections.Counter(a)print(counter)# Counter({1: 4, 2: 4, 3: 2, 5: 2, 4: 1})print(counter.values())# [4, 4, 2, 1, 2]print(counter.keys())# [1, 2, 3, 4, 5]print(counter.most_common(3))# [(1, 4), (2, 4), (3, 2)]print(dict(counter))# {1: 4, 2: 4, 3: 2, 5: 2, 4: 1}``

If you are using Python 2.6 or older, you can download it here.

Note: You should sort the list before using `groupby`.

You can use `groupby` from `itertools` package if the list is an ordered list.

``a = [1,1,1,1,2,2,2,2,3,3,4,5,5]from itertools import groupby[len(list(group)) for key, group in groupby(a)]``

Output:

``[4, 4, 2, 1, 2]``

update: Note that sorting takes O(n log(n)) time.

Python 2.7+ introduces Dictionary Comprehension. Building the dictionary from the list will get you the count as well as get rid of duplicates.

``>>> a = [1,1,1,1,2,2,2,2,3,3,4,5,5]>>> d = {x:a.count(x) for x in a}>>> d{1: 4, 2: 4, 3: 2, 4: 1, 5: 2}>>> a, b = d.keys(), d.values()>>> a[1, 2, 3, 4, 5]>>> b[4, 4, 2, 1, 2]``