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}
我有如下两个列表:
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}