我正在尝试计算字母出现在字符串中的次数,所以我正在使用count()函数,该函数工作正常,但是使用多个count()函数似乎很乏味,因为我试图计算10个以上的信件。
def printer_error(s):
#errorLetters = ('r','s','t','u','v','w','x','y','z')
errorRate = s.count('o') + s.count('p') + s.count('q')
print(errorRate)
return
printer_error('aaaxbbbbyyhwawiwjjjwwm')
我的第一次尝试是s.count(errorLetters),但失败了,因为count()函数不能使用元组或列表。
当前的代码给了我想要的结果但是我仍然需要在errorLetters变量中连接其余的注释掉的字母,还有另一种方法可以做到这一点,不涉及20个以上的连接吗?
答案 0 :(得分:2)
执行此操作的最佳方法仅需要迭代s
一次,即O(n)。
标准库collections
模块提供了一个有用且高效的Counter
对象:
>>> s = 'aaaxbbbbyyhwawiwjjjwwm'
>>> errorLetters = ('r','s','t','u','v','w','x','y','z')
>>> from collections import Counter
>>> counts = Counter(s)
>>> sum(counts[k] for k in errorLetters)
8