如何在Python中从未排序的列表中删除部分重复项?

如何在Python中从未排序的列表中删除部分重复项?,python,list,Python,List,我有一张大单子 [[1,.., ..],[2,...,...],[5,...,...],[1,...,...]] 我需要删除所有具有相同第一个值的元素。(只保留一次) 如何最有效地执行此操作?保留到目前为止看到的第一个值的集,并且仅当子列表的第一个值不在该集中时才保留子列表 因为set.add总是返回None,键.add(sublist[0])或sublist与None或sublist相同,后者与sublist相同,因此它不会影响列表中保留的内容,同时允许您在列表中向集合添加值 keys =

我有一张大单子

[[1,.., ..],[2,...,...],[5,...,...],[1,...,...]]
我需要删除所有具有相同第一个值的元素。(只保留一次)


如何最有效地执行此操作?

保留到目前为止看到的第一个值的
集,并且仅当子列表的第一个值不在该集中时才保留子列表

因为
set.add
总是返回
None
键.add(sublist[0])或sublist
None或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

保留到目前为止看到的第一个值的
集合
,并且仅当子列表的第一个值不在集合中时才保留子列表

因为
set.add
总是返回
None
键.add(sublist[0])或sublist
None或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 biglist]).values()


不同之处在于,第二个返回的第一个列表与第一个值相同,而另一个则相反。

哇,这是一个非常好的答案,而且很有效。我花了几分钟才弄明白。谢谢你的解释,真是太快了!哇,这是个很好的答案,而且很有效。我花了几分钟才弄明白。谢谢你的解释,真是太快了!