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

Python统计首字母代码报KeyError: '*'的含义及解决方法

错误含义

KeyError: '*' 表示你当前操作的字典中不存在 * 这个键,直接尝试读取该键对应的值就会触发该报错。
你的代码里初始化的amounts字典仅包含a-z共26个小写字母作为键,但读取的文本文件中存在首字符为*的单词,代码尝试用*去索引字典时找不到对应键,就触发了报错。

处理方法

你可以根据统计需求选择以下任意方案:

  • 方案一:仅统计首字母为英文字母的单词
    给统计逻辑加一层首字符类型校验,非英文字母开头的内容直接跳过不统计,修改后对应代码段如下:
    for word in line.split():
        # 新增判断:首字符是英文字母才统计
        if word[0].isalpha():
            amounts[word[0].lower()] += 1
    
  • 方案二:需要统计所有首字符的频次(包括符号、数字等)
    用collections.defaultdict替代普通字典,不存在的键会自动初始化默认值为0,完整修改后代码如下:
    import string
    from collections import defaultdict
    
    filename = "I:\\udemy\\Assignment 0.txt" # Replace with filename
    
    amounts = defaultdict(int)
    with open(filename,'r') as file:
        for line in file:
            for word in line.split():
                amounts[word[0].lower()] += 1
    print(amounts)
    
  • 方案三:不修改原有字典初始化逻辑,兼容不存在的键
    用字典的get方法取值,不存在对应键时返回默认值0,修改后对应代码段如下:
    for word in line.split():
        first_char = word[0].lower()
        amounts[first_char] = amounts.get(first_char, 0) + 1
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 22:48:02