2017-05-09 50 views
-3

我有一个python数组,其中包含更多URL链接作为字符串格式。 一些这方面的URL字符串是相等的:Python将相同的字符串链接移入数组

[u'it/crag/830/ai-falconi.html', u'/it/crag/830/ai-falconi.html', u'it/crag/751/alonte.html', u'/it/crag/751/alonte.html'] 

我怎么能去除等于字符串URL? 感谢

+4

[转换为集(https://docs.python.org/2/library/functions.html#func-set)。 – khelwood

+2

可能的重复[如何在保留顺序的同时从列表中删除重复项?](http://stackoverflow.com/questions/480214/how-do-you-remove-duplicates-from-a-list-in-同时保留顺序) –

回答

2

这应做到:

l = [u'it/crag/830/ai-falconi.html', u'/it/crag/830/ai-falconi.html', u'it/crag/751/alonte.html', u'/it/crag/751/alonte.html'] 
result = [j for i, j in enumerate(l) if all(j not in k for k in l[i + 1:])] 
+0

我认为它可以工作 - 但它显着*效率低于list(set(l)) –

+0

@JonClements当然它比'set'慢,但设置不会删除子字符串,因为它不应该,并且这是个问题:) – zipa

+0

为什么不在'l'中为'{'/'+ el.lstrip('/')'然后? (这也标准化了重复以保留一个前导'/',如果需要的话。 –

1

如前所述使用set,因为在一组有没有可以重复

换算成

s = set([u'it/crag/830/ai-falconi.html', u'/it/crag/830/ai-falconi.html', u'it/crag/751/alonte.html', u'/it/crag/751/alonte.html']) 
+0

请检查'len(s)',它仍然是'4' –