你好,我是Python初学者。我正在构建一个小程序,可以查找字符串中的任何重复字符。不过有一点我不明白。
代码:
def is_isogram(string):
dict = {}
for letter in string:
dict[letter] = 1
if letter in dict:
dict[letter] += 1
return dict
print(is_isogram("Dermatoglyphics"))
输出 {'D':1,'e':1,'r':1,'m':1,'a':1,'t':1,'o':1,'g':1,' l': 1, 'y': 1, 'p': 1, 'h': 1, 'i': 1, 'c': 1, 's': 2}
我设置了一个空字典。 然后我使用 for 循环来迭代字符串,然后在每次迭代中它应该将 1 分配给字典键“letter”
然后使用“if...in”检查字母是否已经出现,如果出现则“letter”键应增加1。
我在一个单词 Dermatoglyphics 上尝试过,但每次最后一个键值对总是 2,即使这个单词每个字母只包含 1 个。有谁知道为什么吗?
最佳答案
if
语句在完成 for
循环后应用,以便仅在最后一个字符加 1。这是一个缩进的问题。即使您在循环内编写 if 条件,由于您的逻辑,它也不会正确。您为每个字母分配 dict[letter] = 1
。然后检查if letter in dict
,这样就会加1两次。请改用 else 条件。
def is_isogram(string):
dict = {}
for letter in string:
if letter in dict:
dict[letter] += 1
else:
dict[letter] = 1
return dict
print(is_isogram("Dermatoglyphics"))
或者你可以使用这样的count
函数
def is_isogram(string):
dict = {}
for letter in string:
dict[letter] = string.count(letter)
return dict
print(is_isogram("Dermatoglyphics"))
关于python - 字符串中的重复字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74456724/