I have two lists like the following:
l1= ['a','b','c','a','b','c','c','c']
l2= ['f','g','f','f','f','g','f','f']
I have tried to get the counts of elements in the first list based on a condition:
from collections import Counter
Counter([a for a, b in zip(l1, l2) if b == 'f'])
the output is:
Counter({'a': 2, 'c': 3, 'b': 1})
instead of counts, I would like to get their percentage like the following
'a': 1, 'c': 0.5, 'b': 0.75
I have tried adding Counter(100/([a for a,b in zip(l1,l2) if b=='f']))
, but I get an error.
You can try this:
from collections import Counter
l1= ['a','b','c','a','b','c','c','c']
l2= ['f','g','f','f','f','g','f','f']
d=dict(Counter([a for a,b in zip(l1,l2) if b=='f']))
k={i:j/100 for i,j in d.items()}
print(k)
To calculate percentage:
k={i:(j/l1.count(i)) for i,j in d.items()}
print(k)