在字符串中查找重复字符 (python)

Find a repeated character in a string (python)

我设法在网上找到这段代码,它向我展示了如何查找和打印字符串中的重复字符。我对它的工作方式感到困惑。我不明白 h[i] = 0 部分在技术上是做什么的。有人可以解释一下吗?

a = 'abcdeab'

h = {}

for i in a:
    if i in h:
        print(i)
    else:
        h[i] = 0

我知道它是如何遍历字符串的,但我不明白它是如何被添加到字典中以便检查它是否已经存在于该字典中的。设置 h[i] = 0 是让我失望的原因。我不明白为什么它被设置为 0。

问题解决后补上: 我最终创建了一个不同的解决方案,并认为我会 post 它以防其他人正在研究同样的问题。如下(用列表代替字典):

a = 'abcdeab'

h = []
for i in a:
    if i in h:
        print(i)
    else:
        h.append(i)

此外,如果您只查找第一次出现的重复字符,您可以在 print(i) 之后添加 break。在这种情况下,它只会打印 a 而不是 ab

变量h已定义为字典。对于输入字符串中的每个字母,如果它出现在地图中,它就会被打印出来,否则地图会被分配一个 (key, value) 对 (letter, 0)。也就是说,以字母作为键,零作为(任意)值进入映射。这是带有一些评论的循环:

for i in a:
    if i in h:       # if the key 'i' exists in the dictionary
        print(i)
    else:
        h[i] = 0     # otherwise add an entry for this letter