3

可能重复:
如何在 Python 列表中删除重复项,同时保持顺序?
Python有有序集吗?

我发现自己经常做以下事情:

list_of_items # I have a list of items
set(list_of_items) # I want to remove duplicates

但是,在转换为 aset时,我失去了列表中的初始顺序,这很重要。

删除列表中的重复项并保持列表的初始(相对)顺序的最佳方法是什么?

4

3 回答 3

7

这有点滥用列表推导,但是:

seen = set()
item_list = [seen.add(item) or item for item in item_list if item not in seen]
于 2012-06-15T23:29:34.340 回答
0

使用字典删除重复项,将数据用作键,将任何内容用作值。如果它在字典中,请不要再次添加它。

d = dict()
for i in range(0, len(list_of_items)):
    if(list_of_items[i] not in d):
        d[list_of_items[i]] = i
        list_of_items2.append(list_of_items[i])
于 2012-06-15T23:35:49.450 回答
0

有点骇人听闻,但是...

item_list = [x[1] for x in sorted(x[::-1] for x in dict(zip(item_list[::-1],range(len(item_list)))).items())][::-1]
于 2012-06-15T23:50:35.167 回答