例えば:
>>> str = "aaabbc"
次のような出力を取得するにはどうすればよいですか。
str.count(a) = 3
str.count(b) = 2
str.count(c) = 1
str.count(d) = 0
前もって感謝します。
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}
文字列に含まれていない要素に対しても 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}
ただし、正規表現を使用すると、単一の文字に限定されません。
import re
p = re.compile("a")
len(p.findall("aaaaabc")) //5
詳細については、http: //docs.python.org/2/howto/regex.htmlを参照してください。