2011-08-01 6 views
-3

내가 한 파이썬에서 다음과 같은 구조 :삭제 중복

revisions = [ 
['01.02.2010','abc','qwe'], 
['02.02.2010','abc','qwe'], 
['03.02.2010','aaa','qwe'], 
['04.02.2010','aaa','qwe'], 
['05.02.2010','aaa','qwe'], 
['06.02.2010','aaa','dsa'], 
] 

어떻게 최소 알고리즘의 복잡성과 중복을 제거 할 수 있습니까? 출력 예 :

revisions = [ 
['01.02.2010','abc','qwe'], 
['03.02.2010','aaa','qwe'], 
['06.02.2010','aaa','dsa'], 

]

편집 : 목록이 이미 날짜를 기준으로 정렬됩니다. EDIT2 : 고정 예 미리 감사드립니다.

+4

당신은 측면에 관련 질문의 수십에서 솔루션 중 하나하려고합니다. –

+0

나는 그것을 한 번 확인해 봤는데 반복이 내가 찾은 가장 단순하고 복잡한 해결책이 아니라고 생각합니다. – Gandi

+1

예가 구문 상 올바르지 않습니다. – deStrangis

답변

3

원유 방법 (당신이 뭘하려는 건지 을 추측하면서) :

#!/usr/bin/env python 

import pprint 

revisions = [ 
    ['01.02.2010','abc','qwe'], 
    ['02.02.2010','abc','qwe'], 
    ['03.02.2010','aaa','qwe'], 
    ['04.02.2010','aaa','qwe'], 
    ['05.02.2010','aaa','qwe'], 
    ['06.02.2010','aaa','dsa'], 
] 

uniq, seen = [], set() # sets have O(1) membership tests 

for rev in revisions: 
    if tuple(rev[1:]) in seen: 
     continue 
    else: 
     seen.add(tuple(rev[1:])) 
     uniq.append(rev) 

pprint.pprint(uniq) 

# prints: 
# [['01.02.2010', 'abc', 'qwe'], 
# ['03.02.2010', 'aaa', 'qwe'], 
# ['06.02.2010', 'aaa', 'dsa']]