我有一個大名單如何從Python中的未排序列表中刪除部分重複項?
[[1,.., ..],[2,...,...],[5,...,...],[1,...,...]]
我需要刪除具有相同的第一個值的所有元素。 (只保留一次)
如何最有效地做到這一點?
我有一個大名單如何從Python中的未排序列表中刪除部分重複項?
[[1,.., ..],[2,...,...],[5,...,...],[1,...,...]]
我需要刪除具有相同的第一個值的所有元素。 (只保留一次)
如何最有效地做到這一點?
保留一個set
到目前爲止看到的第一個值,並且只保留子列表,如果他們的第一個值不在集合中。
因爲set.add
總是返回None
,keys.add(sublist[0]) or sublist
相同None or sublist
這是一樣的sublist
,因此它不會影響什麼被保留在列表中,同時讓您值添加到組列表解析裏。
keys = set()
biglist = [keys.add(sublist[0]) or sublist
for sublist in biglist
if sublist[0] not in keys]
del keys # if you don't need it any more
如果列表的順序沒有關係,你可以試試這個:
dict([(sublist[0], sublist) for sublist in biglist]).values()
或
dict([(sublist[0], sublist) for sublist in reversed(biglist)]).values()
不同的是,第二個返回的第一個列表相同的第一個值,另一個相反。
哇,這是相當好的答案,它的工作原理。我花了幾分鐘才弄明白。感謝您的解釋 – siamii 2012-03-22 05:49:34