[英]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.