字符串数组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']
答案 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']