我正在寻找一个字符串函数,可以从多个重复项中删除一个重复的对。
我想要做的功能:
input = ['a','a','a','b','b','c','d','d','d','d']
output = ['a','c']
到目前为止,我所拥有的是:
def double(lijst):
"""
returns all duplicates in the list as a set
"""
res = set()
zien = set()
for x in lijst:
if x in zien or zien.add(x):
res.add(x)
return(res)
def main():
list_1 = ['a','a','a','b','b','c']
list_2 = set(list_1)
print(list_2 - double(list_1))
main()
问题在于它删除了所有重复项,并且没有留下“a”。任何想法如何处理这个问题?
对于那些有兴趣为什么我需要这个;我想跟踪levehnstein函数处理元音步骤的时间,如果正在插入或删除元音我想为“该步骤”分配不同的值(如果元素已经通过矩阵的任一侧,我首先需要处理因此,我需要从元音列表中删除重复对(如输入输出示例中所述)。
答案 0 :(得分:1)
这些解决了您的问题。看一看。
lsit = ['a','a','a','b','b','c']
for i in lsit:
temp = lsit.count(i)
if temp%2==0:
for x in range(temp):
lsit.remove(i)
else:
for x in range(temp-1):
lsit.remove(i)
print lsit
输出:
['a','c']
答案 1 :(得分:1)
只需遍历列表即可。如果结果中不存在元素,请将其添加到集合中。或者,如果集合中已有一个,则取消这两个元素。
代码很简单:
def double(l):
"""
returns all duplicates in the list as a set
"""
res = set()
for x in l:
if x in res:
res.remove(x)
else:
res.add(x)
return res
input = ['a','a','a','b','b','c','d','d','d','d']
print double(input)