簡體   English   中英

如何從Python的未排序列表中刪除部分重復項?

[英]How do I remove partial duplicates from an unsorted list in Python?

我有很多

[[1,.., ..],[2,...,...],[5,...,...],[1,...,...]]

我需要刪除所有具有相同第一個值的元素。 (只保留一次)

如何最有效地做到這一點?

保留到目前為止看到的一set第一個值,並且僅在其第一個值不在集合中時保留子列表。

由於set.add總是返回Nonekeys.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()

區別在於,第二個返回具有相同第一個值的第一個列表,另一個則相反。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM