2 回答
TA贡献1817条经验 获得超6个赞
在这种情况下,您可以使用collections.Counter为您完成所有工作。
>>> from collections import Counter
>>> Counter('aabc')
Counter({'a': 2, 'c': 1, 'b': 1})
您还可以迭代字符串中的字母,因为这是可迭代的。但随后我会使用集合中的 defaultdict 来保存“计数”部分。
>>> 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贡献1785条经验 获得超4个赞
我会建议使用计数器从collections模块。它正是您想要实现的目标
from collections import Counter
wourd = "aabc"
print(Counter(word))
# Counter({'a': 2, 'b': 1, 'c': 1})
但是如果你想自己实现它,我应该知道那str是一个 Iterable。因此,您可以使用简单的循环遍历每个字母。
此外,还有一个叫做defaultdict 的东西,它在这种情况下非常方便。通常,您必须检查是否已经定义了一个键(在这种情况下是一个字母)。如果不是,您必须创建该密钥。如果您使用的是 a defaultdict,您可以定义每个新键都有一个默认值。
from collections import defaultdict
def repeating(word):
counter = defaultdict(int)
for letter in word:
counter[letter] += 1
return counter
结果将是相似的:
In [6]: repeating('aabc')
Out[6]: defaultdict(int, {'a': 2, 'b': 1, 'c': 1})
添加回答
举报