python - 字符串中的重复字符

标签 python dictionary

你好,我是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/

相关文章:

python - 设置数据帧之间列的差异

javascript - 带有 JQuery 函数的 Django 静态 Javascript 资源

c++ - 从映射中删除动态分配的内存

python - 字典值作为访问键时要调用的函数,不使用 "()"

跨不同文件的python多处理

python - 具有多个输入的并行化函数

recursion - F# 迭代嵌套字典

Python-如何在字典中查找多个值/键的平均值

flash - AS3 : Check if a Dictionary is empty

Python和Selenium移动仿真