[英]How do I remove partial duplicates from an unsorted list in 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()
區別在於,第二個返回具有相同第一個值的第一個列表,另一個則相反。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.