猿问

计算Python中一个字符在一行中重复了多少次

我目前正在尝试解决在 Python 中计算连续重复字符的问题。


这段代码一直工作到字符串中的最后一个不同的字符为止,我不知道如何解决这个问题


def repeating(word): 

    count=1

    tmp = ""

    res = {}

    for i in range(1, len(word)):

        tmp += word[i - 1]

        if word[i - 1] == word[i]:

            count += 1

        else :

            res[tmp] = count

            count = 1

            tmp = ""


    return res


word="aabc"

print (repeating(word))

给定的输出应该是 {'aa': 2, 'b': 1, 'c' : 1},但我得到 {'aa': 2, 'b': 1}


我该如何解决这个问题?


芜湖不芜
浏览 208回答 2
2回答

慕的地6264312

在这种情况下,您可以使用collections.Counter为您完成所有工作。>>> from collections import Counter>>> Counter('aabc')Counter({'a': 2, 'c': 1, 'b': 1})您还可以迭代字符串中的字母,因为这是可迭代的。但随后我会使用集合中的 defaultdict 来保存“计数”部分。>>> from collections import defaultdict>>>&nbsp;>>> def repeating(word):&nbsp;...&nbsp; &nbsp; &nbsp;res = defaultdict(int)...&nbsp; &nbsp; &nbsp;for letter in word:...&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;res[letter] +=1...&nbsp; &nbsp; &nbsp;return res...&nbsp;>>> word="aabc">>> print (repeating(word))defaultdict(<type 'int'>, {'a': 2, 'c': 1, 'b': 1})

九州编程

我会建议使用计数器从collections模块。它正是您想要实现的目标from collections import Counterwourd = "aabc"print(Counter(word))# Counter({'a': 2, 'b': 1, 'c': 1})但是如果你想自己实现它,我应该知道那str是一个 Iterable。因此,您可以使用简单的循环遍历每个字母。此外,还有一个叫做defaultdict 的东西,它在这种情况下非常方便。通常,您必须检查是否已经定义了一个键(在这种情况下是一个字母)。如果不是,您必须创建该密钥。如果您使用的是 a defaultdict,您可以定义每个新键都有一个默认值。from collections import defaultdictdef repeating(word):&nbsp; &nbsp; counter = defaultdict(int)&nbsp; &nbsp; for letter in word:&nbsp; &nbsp; &nbsp; &nbsp;counter[letter] += 1&nbsp; &nbsp; return counter结果将是相似的:In [6]: repeating('aabc')Out[6]: defaultdict(int, {'a': 2, 'b': 1, 'c': 1})&nbsp;
随时随地看视频慕课网APP

相关分类

Python
我要回答