一:内置函数Counter方法
str.count(sub, start= 0,end=len(string))
参数
- sub -- 搜索的子字符串
- start -- 字符串开始搜索的位置。默认为第一个字符,第一个字符索引值为0。
- end -- 字符串中结束搜索的位置。字符中第一个字符的索引为 0。默认为字符串的最后一个位置。
from collections import Counter
p = 'bsjhdjahfkakfjkfhka'
target = Counter(p)
print(target)
Counter({'k': 4, 'j': 3, 'h': 3, 'a': 3, 'f': 3, 'b': 1, 's': 1, 'd': 1})
优点:简单不需要自己动手循环,可以返回列表
缺点:速度慢
二:使用ord()函数 ASCII码对照表
a~z对应97~122
p = 'bsjhdjahfkakfjkfhka'
# 创建一个空的26维列表
p_count = [0] * 26
for i in range(len(p)):
p_count[ord(p[i]) - 97] += 1
print(p_count)
-----------------------------------
[3, 1, 0, 1, 0, 3, 0, 3, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0]