例如:
>>> str = "aaabbc"
我如何获得这样的输出:
str.count(a) = 3
str.count(b) = 2
str.count(c) = 1
str.count(d) = 0
提前致谢。
答案 0 :(得分:9)
In [27]: mystr = "aaabbc"
In [28]: collections.Counter(mystr)
Out[28]: Counter({'a': 3, 'b': 2, 'c': 1})
In [29]: dict(collections.Counter(mystr))
Out[29]: {'a': 3, 'b': 2, 'c': 1}
答案 1 :(得分:1)
from collections import defaultdict
d = defaultdict(int)
for ltr in my_string:
d[ltr] += 1
print d
之前已经问了几次......
这是一个在python<中运行的答案2.7
答案 2 :(得分:1)
考虑到你还想要为不在字符串中的元素返回0,你可以试试这个:
def AnotherCounter (my_string, *args):
my_dict = {ele : 0 for ele in args}
for s in my_string:
my_dict[s] +=1
return my_dict
结果:
>>> AnotherCounter("aaabbc", 'a', 'b', 'c', 'd')
{'a': 3, 'c': 1, 'b': 2, 'd': 0}
答案 3 :(得分:0)
使用正则表达式,您不仅限于单个字符:
import re
p = re.compile("a")
len(p.findall("aaaaabc")) //5
如果您想了解更多信息,请访问:http://docs.python.org/2/howto/regex.html。