gpt4 book ai didi

python - 这个函数如何从 python 中的字符串中删除重复字符?

转载 作者:太空狗 更新时间:2023-10-29 17:32:00 26 4
gpt4 key购买 nike

我正在寻找如何创建一个函数来从 python 中的字符串中删除重复字符,并在堆栈溢出时发现了这个:

    from collections import OrderedDict

def remove_duplicates (foo) :
print " ".join(OrderedDict.fromkeys(foo))

它有效,但如何?我搜索了 OrderedDict 和 fromkeys 的含义,但我找不到任何解释它在这种情况下如何工作的内容。

最佳答案

我会试一试:

OrderedDict是按添加顺序存储键的字典。普通词典没有。如果您查看 fromkeysdoc,您会发现:

OD.fromkeys(S[, v]) -> New ordered dictionary with keys from S.

因此 fromkeys 类方法创建了一个 OrderedDict,它使用输入可迭代 S 中的项目(在我的示例中来自字符串的字符)作为键。在字典中,键是唯一的,因此 S 中的重复项将被忽略。

例如:

s = "abbcdece" # example string with duplicate characters

print(OrderedDict.fromkeys(s))

这会产生一个 OrderedDict:

OrderedDict([('a', None), ('b', None), ('c', None), ('d', None), ('e', None)])

然后 "".join(some_iterable) 获取一个可迭代对象并在本例中使用空格连接其元素。它只使用键,因为遍历字典是通过它的键完成的。例如:

for k in OrderedDict.fromkeys(s): # k is a key of the OrderedDict
print(k)

结果:

a
b
c
d
e

随后,调用加入:

print(" ".join(OrderedDict.fromkeys(s)))

将打印出:

a b c d e

使用集合

有时,人们为此使用一组:

print( " ".join(set(s)))
# c a b d e

但与 C++ 中的集合不同,python 中的集合不保证顺序。因此,使用集合可以轻松地为您提供唯一值,但它们的顺序可能与原始列表或字符串中的顺序不同(如上例所示)。

希望对您有所帮助。

关于python - 这个函数如何从 python 中的字符串中删除重复字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29360607/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com