从字符串列表中删除重复项

Rob*_*obD 1 python

好的,所以我有一个这样的列表,我需要的是删除重复的值,以便我最终只有 - Joe Blow,Don Wiliams,Clark Gordon ......我正在尝试这个似乎不起作用的代码.我也尝试将列表转换为一组,但没有去.

有任何想法吗?谢谢

dupes = ["Joe Joe Joe Blow","Don Don Williams", "Clark Clark Gordon", "Albert Riddle"]
def remove_duplicates(dupes):
    ulist = []
    [ulist.append(x) for x in dupes if x not in ulist]    
    return ulist
a=' '.join(remove_duplicates(dupes))

print(a)
Run Code Online (Sandbox Code Playgroud)

End*_*dyd 5

将您的字符串转换为列表,将其转换为集合,然后将其与''连接起来.当转换为集合时,通过按原始字符串的索引排序来保留顺序.

for s in dupes:
    print(' '.join(sorted(set(s.split()), key=s.index)))
Run Code Online (Sandbox Code Playgroud)

输出:

Joe Blow
Don Williams
Clark Gordon
Albert Riddle
Run Code Online (Sandbox Code Playgroud)

编辑:如果要更改列表:

def remove_duplicates(dupes):
    for i in range(len(dupes)):
        dupes[i] = ' '.join(sorted(set(dupes[i].split()), key=dupes[i].index))
Run Code Online (Sandbox Code Playgroud)

  • 请记住,排序需要平均时间复杂度*O(n log n)*,而删除欺骗的问题可以用*O(n)*用其他方法解决. (3认同)