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

Python如何构建以字母为键、出现次数为值的全字母统计字典

实现代码
import string 
from collections import Counter

listy = ["hello","there","I","am","a","string"]
# 先统计所有小写字母的出现次数
all_letters = ''.join(listy).lower()
counter = Counter(all_letters)
# 字典推导式生成包含全部a-z的计数字典
letter_count = {char: counter.get(char, 0) for char in string.ascii_lowercase}
print(letter_count)
代码说明
  • 首先用''.join(listy)把列表中所有字符串拼接成一个完整字符串,调用lower()统一转成小写,避免大写字母漏统计
  • 用Counter统计拼接后字符串里每个字符的出现次数
  • 字典推导式遍历a-z所有小写字母,用counter.get(char, 0)获取对应字母的计数,没出现过就返回0,刚好满足保留所有字母的需求
  • 你原代码存在两个问题:一是变量名不匹配,定义的是letter_count,打印时写的dict_count会报未定义错误;二是只做了全0字典的初始化,没有补充实际计数逻辑
关于字典推导式的疑问解答

这种场景用字典推导式是非常合适的,属于最优写法之一:

  • 写法简洁紧凑,符合Python的惯用法,一行就能完成初始化+赋值的逻辑
  • 可读性很好,只要熟悉推导式语法,能一眼看出是遍历26个字母生成对应计数的字典
  • 性能和分步骤初始化再更新的写法没有差异,底层都是遍历26个字母完成赋值

如果你刚接触推导式觉得不好理解,也可以用分步骤的等价写法:

import string 
from collections import Counter

listy = ["hello","there","I","am","a","string"]
# 先初始化全0字典
letter_count = {key: 0 for key in string.ascii_lowercase}
# 统计所有字母次数
all_letters = ''.join(listy).lower()
counter = Counter(all_letters)
# 更新计数到初始化的字典中
letter_count.update(counter)
print(letter_count)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 07:36:01