如何统计字符串的单个字符出现频率及相邻字符转移频率
相邻字符转移频率统计实现方案
实现思路
- 遍历字符串时仅遍历到倒数第二个字符,避免索引越界
- 每次取当前字符与下一位字符组成
前字符>后字符格式的转移键 - 对每个转移键的出现次数做累加统计
基础版实现(无需导入额外库,适配你现有代码风格)
abc = 'peter piper picked a peck of pickled peppers' # 你原有单字符频率统计代码 freq = {} for i in abc: freq[i] = abc.count(i) # 新增转移频率统计代码 trans_freq = {} for i in range(len(abc) - 1): trans_key = f"{abc[i]}>{abc[i+1]}" if trans_key in trans_freq: trans_freq[trans_key] += 1 else: trans_freq[trans_key] = 1 # 输出结果 print(trans_freq)
简洁版实现(基于Python标准库简化代码)
from collections import Counter abc = 'peter piper picked a peck of pickled peppers' # 单字符频率统计 freq = Counter(abc) # 相邻转移频率统计 trans_freq = Counter(f"{abc[i]}>{abc[i+1]}" for i in range(len(abc)-1)) # 转普通字典可使用 dict(trans_freq)
补充说明
运行代码后可直接匹配你提到的示例统计结果:
p>e: 5e>t: 1t>e: 1e>r: 3
如果需要计算转移概率,可基于已有统计结果直接计算:
trans_prob = {key: count / freq[key.split('>')[0]] for key, count in trans_freq.items()}
内容的提问来源于stack exchange,提问作者Aaron
相关产品推荐
相关产品推荐

