【发布时间】:2017-03-14 06:18:27
【问题描述】:
我在 python 中有一个列表:[adam,josh,drake]
我想输出一个单词在所有单词中的使用次数百分比(例如 adam-33%、josh 33% 等)。因此,如果我在列表中添加一个单词,百分比将相应更改。
【问题讨论】:
-
编辑问题并发布您的代码,我的建议是在列表中运行一两个循环并获取每个名称的频率,然后将其除以列表中每个名称的总数名称
我在 python 中有一个列表:[adam,josh,drake]
我想输出一个单词在所有单词中的使用次数百分比(例如 adam-33%、josh 33% 等)。因此,如果我在列表中添加一个单词,百分比将相应更改。
【问题讨论】:
您可以使用collections.Counter 计算每个单词出现的频率。
然后您可以遍历生成的对象,并将每个计数除以原始列表的长度,得到从 0.0 到 1.0 的小数百分比,可以将其乘以 100,得到 0 到 100 之间的百分比以打印出来.
【讨论】:
您应该查看集合模块,尤其是https://docs.python.org/3/library/collections.html#collections.Counter
from collections import Counter
names = ['adam','josh','drake']
count = Counter(names).items()
percentages = {x: int(float(y) / len(names) * 100) for x, y in count}
for name, pct in percentages.iteritems():
print '%s - %s%s' % (name, pct, '%')
Counter 上的 items 方法生成名称的元组列表以及该名称在原始列表中出现的次数。
【讨论】: