且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

在保留顺序和删除最旧元素的同时从Python列表中删除重复项的最有效方法

更新时间:2023-11-23 14:12:22

要求项(或键)是可散列的,就可以在类似列表的地方工作:

Requires the items (or keys) to be hashable, works in-place on list-likes:

def inplace_unique_latest(L, key=None):
  if key is None:
    def key(x):
      return x
  seen = set()
  n = iter(xrange(len(L) - 1, -2, -1))
  for x in xrange(len(L) - 1, -1, -1):
    item = L[x]
    k = key(item)
    if k not in seen:
      seen.add(k)
      L[next(n)] = item
  L[:next(n) + 1] = []