如何在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()
或
不同之处在于,第二个返回的第一个列表与第一个值相同,而另一个则相反。哇,这是一个非常好的答案,而且很有效。我花了几分钟才弄明白。谢谢你的解释,真是太快了!哇,这是个很好的答案,而且很有效。我花了几分钟才弄明白。谢谢你的解释,真是太快了!