如何从列表中删除重复项

时间:2019-06-27 18:16:08

标签: python-3.x list

字符串数组F1获得了Facebook用户及其关联的名称 如果是U1,则表明U1是U2的朋友。这意味着U2是U1的朋友 因此,读取F1并删除重复项并写入F2的所有唯一巴黎

test_list = ["U1,U2","U3,U4","U2,U1"]

res_list = [] 
for i in range(len(test_list)): 
    if test_list[i] not in test_list[i + 1:]: 
        res_list.append(test_list[i]) 
print ("Resultant list is : " + str(res_list)) 

原始输出:

   Resultant list is : ['U1,U2', 'U3,U4', 'U2,U1']

预期输出:

     Resultant list is : ['U1,U2', 'U3,U4']

1 个答案:

答案 0 :(得分:2)

您可以将值拆分为frozenset并进行一组处理。这将删除重复项。然后,您可以重新加入字符串。您需要使用frozenset,因为常规集合不可散列,并且您不能从它们中建立集合。

test_list = ["U1,U2","U3,U4","U2,U1"]
unique = set([frozenset(s.split(",")) for s in test_list])
[",".join(s) for s in unique]

结果:

['U2,U1', 'U4,U3']

这不一定保留原始字符串的顺序。由于集合是对称的,因此可能无关紧要。但是,如果这样做的话,您可以制作一个稍微不那么紧凑的函数来实际过滤列表:

def dedupe(l):
    seen = set()
    res = []
    for s in l:
        fs = frozenset(s.split(','))
        if fs not in seen:
            res.append(s)
        seen.add(fs)
    return res

这将保留找到的第一个新字符串:

['U1,U2', 'U3,U4']