我无法弄清楚当我尝试以下操作时,为什么字符串中的最后一个字符总是被省略:
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))
答案 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
这取决于您希望控制流如何工作,但我认为第二个功能最适合您。