2 回答

TA貢獻(xiàn)1817條經(jīng)驗(yàn) 獲得超6個(gè)贊
在這種情況下,您可以使用collections.Counter為您完成所有工作。
>>> from collections import Counter
>>> Counter('aabc')
Counter({'a': 2, 'c': 1, 'b': 1})
您還可以迭代字符串中的字母,因?yàn)檫@是可迭代的。但隨后我會(huì)使用集合中的 defaultdict 來保存“計(jì)數(shù)”部分。
>>> from collections import defaultdict
>>>
>>> def repeating(word):
... res = defaultdict(int)
... for letter in word:
... res[letter] +=1
... return res
...
>>> word="aabc"
>>> print (repeating(word))
defaultdict(<type 'int'>, {'a': 2, 'c': 1, 'b': 1})

TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超4個(gè)贊
我會(huì)建議使用計(jì)數(shù)器從collections模塊。它正是您想要實(shí)現(xiàn)的目標(biāo)
from collections import Counter
wourd = "aabc"
print(Counter(word))
# Counter({'a': 2, 'b': 1, 'c': 1})
但是如果你想自己實(shí)現(xiàn)它,我應(yīng)該知道那str是一個(gè) Iterable。因此,您可以使用簡(jiǎn)單的循環(huán)遍歷每個(gè)字母。
此外,還有一個(gè)叫做defaultdict 的東西,它在這種情況下非常方便。通常,您必須檢查是否已經(jīng)定義了一個(gè)鍵(在這種情況下是一個(gè)字母)。如果不是,您必須創(chuàng)建該密鑰。如果您使用的是 a defaultdict,您可以定義每個(gè)新鍵都有一個(gè)默認(rèn)值。
from collections import defaultdict
def repeating(word):
counter = defaultdict(int)
for letter in word:
counter[letter] += 1
return counter
結(jié)果將是相似的:
In [6]: repeating('aabc')
Out[6]: defaultdict(int, {'a': 2, 'b': 1, 'c': 1})
添加回答
舉報(bào)