VlS
VlS

Reputation: 586

Counter in Python

Is there a way to collect values in Counter with respect to occurring number?

Example:
Let's say I have a list:

list = ['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'c', 'd', 'd']

When I do the Counter:

Counterlist = Counter(list)

I'll get:

Counter({'b': 3, 'a': 3, 'c': 3, 'd': 2})

Then I can select let's say a and get 3:

Counterlist['a'] = 3

But how I can select the occurring number '3'?
Something like:

Counterlist[3] = ['b', 'a', 'c'] 

Is that possible?

Upvotes: 1

Views: 97

Answers (1)

Simeon Visser
Simeon Visser

Reputation: 122536

You can write the following

import collections

my_data = ['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'c', 'd', 'd']
result = collections.defaultdict(list)
for k, v in collections.Counter(my_data).items():
    result[v].append(k)

and then access result[3] to obtain the characters with that count.

Upvotes: 2

Related Questions