2013-09-24 71 views
0

我有一個python腳本,它解析.txt文件,如下生成列表:如何使用python消除列表中的重複元素?

['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'] 

我需要消除重複。我怎樣才能做到這一點?

+2

請使用'set'代替? –

+1

重複:http://stackoverflow.com/q/7961363/1286571,或者:http://stackoverflow.com/q/480214/1286571 – ForeverWintr

+0

http://stackoverflow.com/questions/12897374/get-unique-values - 從-A-列表中的Python – agentp

回答

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

如果你碰巧需要順序被保存:

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) 

這是一個可愛的小」的工具,我前一段時間做,可以讓你uniquify兩個哈希的和非可哈希的元素列表中最小的可能時間(假設沒有完全排序的非可哈希元素),並且它還允許key將它們獨立化。

雖然這種情況幾乎肯定是矯枉過正。但它在那裏,而且它是免費的。

相關問題