2012-03-01 1 views
1

를 사용하여 목록에서 중복 항목을 제거 NAME1 ","UGA ","GGU ']으로 파이썬에서 열린 나는이 항목이 큰 파일이 파이썬

['DEF ','chr9 ','14855289 ', NAME19', 'UCG', 'GUC']

[ 'TTC', 'chr9 ','793946 ','NAME178 ','CAG ','GUC ']

,451,515,

[ 'ABC', 'chr9', '3468582', 'NAME272', 'UGT', 'GCU']

I에서만 고유 항목을 추출하고, COL1 동일 값 엔트리를 제거 할 필요

, COL2 및 col3. 이 경우 마지막 줄은 col1, col2 및 col3을 기준으로 한 줄 1과 같습니다.

내가 두 가지 방법을 시도했지만 실패했다

:

방법 1 :

outlist=[] 

for element in parsed_in:  
    if element[0:3] not in outlist[0:3]: 
    outlist.append(element) 

방법 2 :

outlist=[] 
parsed_list=list(parsed_in) 
for element in range(0,len(parsed_list)): 
    if parsed_list[element] not in parsed_list[element+1:]: 
    outlist.append(parsed_list[element]) 

이 둘의 기준으로 모든 항목이 아닌 고유 한 항목을 다시 제공 처음 세 개의 열.

그렇게

AK

+3

가능한 중복 [어떻게 파이썬의 목록에서 중복을 제거합니까?] (http://stackoverflow.com/questions/479897/how-do-you-remove-duplicates-from-a-list-in- python) – kennytm

+0

그의 목록은 데이터의 일부분만을 기반으로하고 전체 데이터 집합을 기반으로하는 것이 아니라 고유 한 복제본이 아닙니다. – MitMaro

답변

2

당신은 아마도 자신을 추가하는 동안 요소의 전체 검사를 저장하기 위해 O (1) 조회를 사용하려면, 그리고 Caol Acain 말한 것처럼, 그것을 할 수있는 좋은 방법입니다 설정합니다. 당신은 교대로 행 키를 매핑 사전을 사용할 수도

outlist=[] 
added_keys = set() 

for row in parsed_in: 
    # We use tuples because they are hashable 
    lookup = tuple(row[:3])  
    if lookup not in added_keys: 
     outlist.append(row) 
     added_keys.add(lookup) 

, 그러나 이것은 당신이 입력의 순서를 유지하지 것이라고 경고있을 것입니다 : 뭔가처럼 당신이 원하는 무엇

입니다 따라서 목록과 키 세트를 사용하면 주문을 파일로 유지할 수 있습니다.

+0

첫 번째 답변은 내가 게시하려고했던 것보다 훨씬 낫습니다. +1 – MitMaro

0

이 세트에 목록을 변환 할 날 수있는 방법을 제안하십시오!

http://docs.python.org/tutorial/datastructures.html#sets

+0

나는 이것을 가장 먼저 생각했지만 문제를 더 자세히 읽으면 세트가 작동하지 않는다는 것을 알게 될 것입니다. 목록의 각 항목은 하위 목록의 처음 세 요소에서만 고유합니다. – MitMaro