Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Python列表中删除重复项的最有效方法,同时保留顺序并删除最旧的元素_Python_List - Fatal编程技术网

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

从Python列表中删除重复项的最有效方法,同时保留顺序并删除最旧的元素,python,list,Python,List,我在网站上看到了一系列解决方案,可以在保留最古老元素的同时删除重复项。我的兴趣正好相反:在保留最新元素的同时删除重复项,例如: list = ['1234','2345','3456','1234'] list.append('1234') >>> ['1234','2345','3456','1234','1234'] list = unique(list) >>> ['2345','3456','1234'] 这个工作怎么样 谢谢。要求项目(或键)可以散

我在网站上看到了一系列解决方案,可以在保留最古老元素的同时删除重复项。我的兴趣正好相反:在保留最新元素的同时删除重复项,例如:

list = ['1234','2345','3456','1234']
list.append('1234')
>>> ['1234','2345','3456','1234','1234']
list = unique(list)
>>> ['2345','3456','1234']
这个工作怎么样

谢谢。

要求项目(或键)可以散列,在列表中可以正常工作,如:

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] = []

我可能是看错了,但是一旦你从列表中弹出,你不会看错吗?你最终会弹出错误的项目,因为一切都变了?@bstperre:接得好;已修复。请尝试使用
reversed()
反转列表,然后按照其他地方描述的操作,然后再次反转。好的,您可以反转列表,按照其他答案所述操作,然后再次反转。