python: 从收集计数器中获取百分比

python: get percentage from collection counter

我有如下两个列表:

l1= ['a','b','c','a','b','c','c','c']
l2= ['f','g','f','f','f','g','f','f']

我尝试根据条件获取第一个列表中元素的数量:

from collections import Counter
Counter([a for a, b in zip(l1, l2) if b == 'f'])

输出是:

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

而不是计数,我想得到他们的百分比,如下所示

'a': 1, 'c': 0.5, 'b': 0.75

我尝试添加 Counter(100/([a for a,b in zip(l1,l2) if b=='f'])),但出现错误。

你可以试试这个:

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)

计算百分比:

k={i:(j/l1.count(i)) for i,j in d.items()}
print(k)

您是否特别需要一行完成?如果没有,也许这可行:

from collections import Counter
l1= ['a','b','c','a','b','c','c','c']
l2= ['f','g','f','f','f','g','f','f']


alpha = Counter([a for a,b in zip(l1,l2) if b=='f'])
for key, item in alpha.items():
    alpha[key] = int(item)/100

print(alpha)

计算l1中字符出现的频率,除法得到百分比

在你的代码中 b 百分比应该是 0.5 而不是 0.75

l1 = ['a','b','c','a','b','c','c','c']
l2 = ['f','g','f','f','f','g','f','f']

from collections import Counter
a = Counter(l1)
c = Counter([a for a, b in zip(l1, l2) if b == 'f'])

c = {i:(v/a[i]) for i,v in c.items()}
print(c)
{'a': 1.0, 'c': 0.75, 'b': 0.50}