I'm a python newbie, so please bear with me.
I need to find the frequency of elements in a list
a = [1,1,1,1,2,2,2,2,3,3,4,5,5]
output->
b = [4,4,2,1,2]
Also I want to remove the duplicates from a
a = [1,2,3,4,5]
I'm a python newbie, so please bear with me.
I need to find the frequency of elements in a list
a = [1,1,1,1,2,2,2,2,3,3,4,5,5]
output->
b = [4,4,2,1,2]
Also I want to remove the duplicates from a
a = [1,2,3,4,5]
For your first question, iterate the list and use a dictionary to keep track of an elements existsence.
For your second question, just use the set operator.
To count the number of appearances:
from collections import defaultdict
appearances = defaultdict(int)
for curr in a:
appearances[curr] += 1
To remove duplicates:
a = set(a)
Counting the frequency of elements is probably best done with a dictionary:
b = {}
for item in a:
b[item] = b.get(item, 0) + 1
To remove the duplicates, use a set:
a = list(set(a))
seta = set(a)
b = [a.count(el) for el in seta]
a = list(seta) #Only if you really want it.
Since the list is ordered you can do this:
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]
In Python 2.7+, you could use collections.Counter to count items
>>> a = [1,1,1,1,2,2,2,2,3,3,4,5,5]
>>>
>>> from collections import Counter
>>> c=Counter(a)
>>>
>>> c.values()
[4, 4, 2, 1, 2]
>>>
>>> c.keys()
[1, 2, 3, 4, 5]
In Python 2.7, you can use collections.Counter:
import collections
a = [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)]
If, like me, you are using Python 2.6 or older, you can download it here.