繁体   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