如何基于全部可选选项计算投票选择的出现占比?
解决投票选项占比统计缺失未选选项的问题
直接用以下方式实现,既能保证所有预设选项都出现在结果中,又无需多次遍历用户输入:
from collections import Counter def find_occurency_percentage(user_inputs, choices): total_votes = len(user_inputs) # 初始化所有预设选项的占比为0.0 result = {choice: 0.0 for choice in choices} if total_votes == 0: return result # 仅遍历一次用户输入统计各选项出现次数 vote_counts = Counter(user_inputs) # 计算有投票记录的选项占比并更新结果 for option, count in vote_counts.items(): result[option] = round((count / total_votes) * 100, 2) return result
代码说明
- 初始化结果字典:通过字典推导式一次性创建包含所有预设选项的字典,默认值设为0.0,确保未被选择的选项也会出现在结果中。
- 边界处理:如果没有用户输入(总票数为0),直接返回全0的结果字典。
- 高效统计:用
Counter仅遍历一次用户输入,统计各选项的出现次数,避免重复遍历输入数据。 - 计算占比:遍历统计得到的结果,计算对应选项的占比并更新到初始字典中,未被统计到的选项保持0.0不变。
测试示例
当用户输入为['Agree', 'Disagree', 'Agree', 'Disagree', 'Agree', 'Agree'],预设选项为['Agree', 'Disagree', 'Leave Blank']时,调用函数会返回:
{'Agree': 66.67, 'Disagree': 33.33, 'Leave Blank': 0.0}
内容的提问来源于stack exchange,提问作者Iqra Moazzama
相关产品推荐
相关产品推荐

