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

sia*_*mii 1 python list

我有一个很大的清单

[[1,.., ..],[2,...,...],[5,...,...],[1,...,...]]
Run Code Online (Sandbox Code Playgroud)

我需要删除所有具有相同第一个值的元素。(只保留一次)

怎么做最有效率?

agf*_*agf 5

保留set迄今为止看到的第一个值,并且只保留子列表,如果它们的第一个值不在集合中。

因为set.add总是返回None,keys.add(sublist[0]) or sublistNone or sublistwhich 与 相同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
Run Code Online (Sandbox Code Playgroud)