我必须从字符串中删除重复值,其中子值由分隔符分隔。我的示例字符串类似于 "aa~*yt~*cc~*aa"
,其中 ~* 是定界符,需要删除 aa 的重复出现
我也尝试使用 set cmmand 和下面的代码,但它们给出的输出为
"a~*ytc"
但是我需要输出:
"aa~*yt~*cc"
d = {}
s="aa~*yt~*cc~*aa"
res=[]
for c in s:
if c not in d:
res.append(c)
d[c]=1
print ("".join(res))
我看了很多提供的答案,但无法解决这个问题。如果有任何解决方案,请告诉我。谢谢,非常感谢您的宝贵时间 :)
最佳答案
你可以 split
分隔符的字符串,获取结果 list
的 set
(删除重复项),根据原始字符串和 join
中出现的顺序对元素进行排序再次设置 ~
作为分隔符:
s = "aa~*yt~*cc~aa"
'~'.join(sorted(set(s.split('~')), key=s.index))
# 'aa~*yt~*cc'
如果性能很重要,请预先定义用于对结果集进行排序的字典:
l = s.split('~')
length = len(l)
d = {j:length-i for i,j in enumerate(l[::-1])}
# {'aa': 1, '*cc': 3, '*yt': 2}
'~'.join(sorted(set(l), key=lambda x: d[x]))
# 'aa~*yt~*cc'
关于python - 如何在不删除分隔符的情况下从字符串中获取唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57758609/