Python 重复字符计数
我不明白为什么在尝试以下操作时,字符串中的最后一个字符总是被忽略:Python 重复字符计数,python,string,python-3.x,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 fo
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))
您仅在添加给定字符之前输出计数,因此您将永远看不到最终计数。如果您想更改,可以将打印对账单移动到后面
另一个问题是,您的程序只返回字典中最后一个条目的重复计数。您需要创建一个新的字典,或者根据您的要求取num的最大值最后一个字符不会被省略,在调用printcount.items时,它还没有被添加到count中。在我看来,这可能需要更多的分段。在我看来,你不应该专注于计算重复的信件;您应该将功能范围缩小到识别哪些字母出现,以及它们出现的次数。这可以很容易地存储在字典变量中 例如:
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
这取决于您希望控制流如何工作,但我认为第二个函数最适合您。在您的问题中添加以下信息:1您认为函数的作用是什么。你得到了什么样的输出。3您期望得到什么样的输出以及原因。不要将此作为评论发布。点击问题下方的“编辑”按钮,并将其直接放在那里。它不会被忽略。在添加新字符之前,您的函数会打印count.items,因此字符似乎丢失了,但事实并非如此。在您的字符变量中放置一些实际的副本以供测试是非常值得的。。。