我发现自己经常做以下事情:
list_of_items # I have a list of items
set(list_of_items) # I want to remove duplicates
但是,在转换为 aset
时,我失去了列表中的初始顺序,这很重要。
删除列表中的重复项并保持列表的初始(相对)顺序的最佳方法是什么?
我发现自己经常做以下事情:
list_of_items # I have a list of items
set(list_of_items) # I want to remove duplicates
但是,在转换为 aset
时,我失去了列表中的初始顺序,这很重要。
删除列表中的重复项并保持列表的初始(相对)顺序的最佳方法是什么?
这有点滥用列表推导,但是:
seen = set()
item_list = [seen.add(item) or item for item in item_list if item not in seen]
使用字典删除重复项,将数据用作键,将任何内容用作值。如果它在字典中,请不要再次添加它。
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])
有点骇人听闻,但是...
item_list = [x[1] for x in sorted(x[::-1] for x in dict(zip(item_list[::-1],range(len(item_list)))).items())][::-1]