我有以下多次重复的数组,我想删除它们维护订单。
v = ['maier', 'tapa pure', 'embega', 'maier', 'tapa pure', 'embega', 'maier', 'tapa pure', 'embega', 'maier', 'tapa pure', 'embega', 'maier', 'tapa pure', 'embega', 'maier', 'tapa pure', 'embega', 'maier', 'tapa pure', 'embega', 'maier', 'tapa pure', 'embega']
我使用list(set(v))
并获得以下输出:
['embega', 'maier', 'tapa pure']
我想要的是删除重复,但保持原始顺序:
['maier', 'tapa pure', 'embega']
我无法使用v[:3]
,因为重复长度是可变的。
我该怎么做?
提前致谢。
答案 0 :(得分:5)
您应该使用collections.OrderedDict
的fromkeys
功能,就像这样
from collections import OrderedDict
print OrderedDict.fromkeys(v).keys()
# ['maier', 'tapa pure', 'embega']
答案 1 :(得分:3)
seen_items = set()
w = []
for item in v:
if item not in seen_items:
w.append(item)
seen_items.add(item)