-1

例如:

>>> str = "aaabbc"

我将如何获得这样的输出:

str.count(a) = 3
str.count(b) = 2
str.count(c) = 1
str.count(d) = 0

提前致谢。

4

4 回答 4

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}
于 2012-12-10T21:41:36.337 回答
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}
于 2012-12-10T21:55:51.897 回答
1
from collections import defaultdict

d = defaultdict(int)

for ltr in my_string:
    d[ltr] += 1

print d

之前已经问过几次了...

这是一个适用于 python < 2.7 的答案

于 2012-12-10T21:42:34.800 回答
0

但是,使用正则表达式,您不仅限于单个字符:

import re
p = re.compile("a")
len(p.findall("aaaaabc")) //5

如果您想了解更多信息,请访问此处:http ://docs.python.org/2/howto/regex.html 。

于 2012-12-10T21:43:40.533 回答