计算重复的字符

时间:2016-08-31 14:45:12

标签: python string python-3.x

我无法弄清楚当我尝试以下操作时,为什么字符串中的最后一个字符总是被省略:

def duplicate_count(text):
    num = 0
    count = {}
    for char in text:
        print(count.items())
        if char in count.keys():
            count[char] += 1
        else:
            count [char] = 1
    for key in count:
        if count[key] == 1:
           num = 0
        else:
           num = count[key] - 1
    return (num)

char_s = 'abcde'
print (duplicate_count(char_s))

3 个答案:

答案 0 :(得分:2)

您只能在添加给定字符之前输出计数,因此您永远不会看到最终计数。如果您想更改,可以将打印声明移至if之后。

另一个问题是您的程序只返回字典中最后一个条目的重复计数。您需要创建一个新字典,或者根据您的要求获取num的最高值

答案 1 :(得分:2)

最后一个字符不会被忽略,当您拨打count时,它尚未添加到print(count.items())

答案 2 :(得分:0)

在我看来,这可能会使用更多的细分。在我看来,你不应该专注于计算重复的字母;你应该缩小函数的范围,以确定出现哪些字母,以及它们出现的次数。这可以很容易地存储在字典变量中。

示例:

def string_occurence (string):
    dict={}
    for char in string:
        dict [char]=string.count (char)
    return dict

您还可以在检查字符串之前创建一组唯一字符来优化它:

def string_occurence (string):
    char_set=set ([char for char in string])
    dict={}
    for char in char_set:
        dict [char]=string.count (char)
    return dict

这取决于您希望控制流如何工作,但我认为第二个功能最适合您。