2014-12-11 4 views
1

나는 약 3000 종 분류의 행렬을 가지고 있습니다.목록을 고유하게 만들기 (파이썬)

절지/육각 류/Insecta/시류/Cerambycidae/Anaglyptus

각 라인은 분류 학적 분류의 서열이다. 필자가해야 할 일은 3000 라인을 정렬하여 각 파일이 고유하므로 계통 발생 (진화) 나무를 만드는 프로그램에 파일을 공급할 수 있도록하는 것입니다.

목록을 해시 가능 객체가 아니기 때문에 집합을 사용하려고했지만 오류가 발생했지만 각 행의 각 열에 값이 중첩 될 때 각 행을 함께 유지하는 것이 중요합니다.

마지막 열에 유일한 값만 있지만 각 행의 무결성을 유지하는 가장 좋은 방법은 무엇입니까?

많은 감사 의견에서 언급 한 바와 같이

+2

당신이 다음 재귀 적으로 튜플에 대한 모든 목록을 매핑 가장 바깥에'set'를 사용하려고

# Create the Dataset L = [] L.append(["Arthropoda", "Hexapoda", "Insecta", "Coleoptera", "Cerambycidae", "Anaglyptus"]) L.append(["Arthropoda", "Hexapoda", "Insecta", "Coleoptera", "Cerambycidae", "Aromia"]) # Instead of a list of lists, let's have a list of tuples! L = [tuple(x) for x in L] # Using a set, we can easily remove duplicates L = set(L) 

+0

@ AdamSmith 그러나 주문을 잃지 않을까요? –

+1

택 소노 미가 중첩 된 사전에 정말 잘 어울리지 않습니까? 그것은 내가 바라 볼 해결책이 될 것입니다. – CoryKramer

답변

0

는 튜플 나열하지 않더라도, 해쉬 있습니다. 행을 튜플로 변환 해 봅시다!

l = [] 
with open('file.txt', 'r') as fp: 
    for i in fp.readlines(): 
     if i not in l: 
      l.append(i) 

with open('file2.txt', 'w') as fp: 
    fp.writelines(l) 
+0

감사 빌, 매우 유용 !! –

0

파이썬 마스터

는 불쾌 할 수 있지만,이 답변이 가치가있다?
+1

또는 http://stackoverflow.com/questions/1653970/does-python-have-an-ordered-set 다음 주문 세트를 사용하십시오 – kdopen

+0

@kdopen 그래,하지만이 방법은 매우 간단하고 쉽게 학습자가 사용할 수 있습니다. –