Python字符串函数,用于从多个重复项中删除一个重复对

时间:2015-09-19 10:44:10

标签: python

我正在寻找一个字符串函数,可以从多个重复项中删除一个重复的

我想要做的功能:

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函数处理元音步骤的时间,如果正在插入或删除元音我想为“该步骤”分配不同的值(如果元素已经通过矩阵的任一侧,我首先需要处理因此,我需要从元音列表中删除重复对(如输入输出示例中所述)。

2 个答案:

答案 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)