You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python遍历数据集统计教育水平出现次数生成频率字典

问题修正方案

现有代码的两个核心错误

  • 初始化逻辑错误:你写的字典推导式外层套了方括号[],生成的是由多个单键字典组成的列表,而不是我们需要的单个频率统计字典
  • 遍历统计逻辑错误:
    1. 错误地将数据条目的教育水平字段和整个频率字典做等值判断,该条件永远不成立
    2. 累加计数时用整个数据条目entry作为字典键,而非教育水平字符串

修正后的完整代码

首先初始化符合要求的频率字典:

# 正确初始化:生成单个字典,所有指定教育水平初始值为0
education_level_frequencies = {level: 0 for level in unique_education_levels}

再修正遍历统计逻辑:

for entry in salary_data:
    edu_level = entry['Education']
    # 仅统计列表中存在的教育水平
    if edu_level in education_level_frequencies:
        education_level_frequencies[edu_level] += 1

运行结果

针对你给出的示例数据集,最终输出为:

{
    'A - No HS Diploma': 2,
    'B - HS Diploma': 2,
    'C - Some College': 0,
    'D - Associates': 0,
    'E - Bachelors': 4,
    'F - Graduate Degree': 2
}

可选简化方案(使用标准库)

如果希望代码更简洁,可以配合collections.Counter实现,同样能保证覆盖所有指定的教育水平:

from collections import Counter

# 先统计数据集中所有教育水平的出现次数
counts = Counter(entry['Education'] for entry in salary_data)
# 合并到包含所有唯一教育水平的字典中,未出现的项默认值为0
education_level_frequencies = {level: counts.get(level, 0) for level in unique_education_levels}

内容的提问来源于stack exchange,提问作者imkusoh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 07:45:03