-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 に答える
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 に答える