我有一个python脚本,它解析.txt
文件并生成一个列表,如下所示:
['test=testTC101', 'test=testTC101', 'test=testTC102', 'test=testTC102', 'test=testTC103', 'test=testTC103', 'test=testTC104', 'test=testTC104', 'test=testTC105', 'test=testTC105', 'test=testTC106', 'test=testTC106', 'test=testTC107', 'test=testTC107']
我需要消除重复。我怎样才能做到这一点?
答案 0 :(得分:3)
只需使用set
:
>>> x = ['test=testTC101', 'test=testTC101', 'test=testTC102', 'test=testTC102',
... 'test=testTC103', 'test=testTC103', 'test=testTC104', 'test=testTC104',
... 'test=testTC105', 'test=testTC105', 'test=testTC106', 'test=testTC106',
... 'test=testTC107', 'test=testTC107']
>>> set(x)
set(['test=testTC101', 'test=testTC103', 'test=testTC102', 'test=testTC105',
'test=testTC104', 'test=testTC107', 'test=testTC106'])
>>>
然后,您可以使用list
始终将其重新导入列表:
>>> list(set(x))
['test=testTC101', 'test=testTC103', 'test=testTC102', 'test=testTC105',
'test=testTC104', 'test=testTC107', 'test=testTC106']
>>> # You can also use sorted to order the items
>>> sorted(list(set(x)))
['test=testTC101', 'test=testTC102', 'test=testTC103', 'test=testTC104',
'test=testTC105', 'test=testTC106', 'test=testTC107']
>>>
保证集合没有重复。
答案 1 :(得分:1)
您是否恰好需要保留订单:
def best_case_iteruniq(iterable, key=None):
memo_hash = set()
memo_else = list()
add_hash = memo_hash.add
add_else = memo_else.append
if key is None:
def predicate(item):
try:
hash(item)
except TypeError:
if item in memo_else:
return False
add_else(item)
return True
else:
if item in memo_hash:
return False
add_hash(item)
return True
else:
def predicate(actual_item):
item = key(actual_item)
try:
hash(item)
except TypeError:
if item in memo_else:
return False
add_else(item)
return True
else:
if item in memo_hash:
return False
add_hash(item)
return True
return filter(predicate, iterable)
这是我之前提出的一个lil'工具,允许您在最短的时间内(假设没有完全排序的不可清除元素)统一可清洗和不可清洗元素的列表,并且它也允许key
用它来统一它们。