在保留顺序和移除最旧元素的情况下,最有效的去除Python列表重复项的方法
我在这个网站上看到很多方法可以去掉重复的元素,同时保留最旧的那个元素。不过我想要的是相反的效果:去掉重复的元素,但保留最新的那个元素。例如:
list = ['1234','2345','3456','1234']
list.append('1234')
>>> ['1234','2345','3456','1234','1234']
list = unique(list)
>>> ['2345','3456','1234']
像这样的操作应该怎么做呢?
谢谢。
1 个回答
3
这个功能需要你用的项目(或者说是键)必须是可以被哈希的,也就是说它们需要是可以唯一标识的东西。这个操作是在列表类的对象上直接进行的,也就是说它会直接修改原来的列表,而不是创建一个新的。
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] = []