2017-11-07 14 views
0

중복을 확인하는 동안 다른 목록에 목록을 추가하는 데 도움이 필요합니다. 나만 이미 기본 목록에 항목을 추가하고 싶습니다.중복을 확인하는 동안 목록을 다른 목록에 추가

기본 목록의 항목도 목록이기 때문에 집합을 사용하여이 작업을 수행 할 수 없습니다. 다음과 같이

내 기본 목록의 예는 다음과 같습니다

toCrawl=[["http://website.html",0]["http://websiteAlt.html",1]["http://websiteAlt.html",1]] 

다음과 같이 나는이에 추가 할 목록은 다음과 같습니다

newLinks=["http://websiteAlt.html","http://websiteExample.html","http://websiteExampleAlt.html"] 

그래서 나는 'newLinks'을 추가 할 목록을 기본 'toCrawl'목록에 추가하지만 newLinks의 항목이 아직 toCrawl에없는 경우에만 추가하려고합니다.

또한 'newLinks'의 항목을 'toCrawl'목록에 목록으로 추가하려고합니다. 따라서 'newLinks'에 항목을 추가하는 것보다 : ["http://websiteExample.html",0]

+1

사전을 사용할 수 없습니까? –

답변

1

목록 대신 사전으로이 작업을 수행 할 수 있습니까?

toCrawlDict = dict(toCrawl) 
for link in newLinks: 
    if link not in toCrawlDict: 
     toCrawlDict[link] = 0 
1

좋은 솔루션은 지능형리스트를 사용하여 세트로 목록을 캐스팅하는 것 :

{'http://website.html', 'http://websiteAlt.html'} 

toCrawl=[["http://website.html",0],["http://websiteAlt.html",1],["http://websiteAlt.html",1]] 
newLinks = set([item[0] for item in toCrawl]) 
print(newLinks) 

출력이 중복, 세트를 제거하기 위해 좋은 속임수 인 것 같습니다. 이것은 documentation에서입니다 :

집합 객체는 일련의 고유 한 해시 가능 객체 모음입니다. 공통적 인 용도로는 멤버십 테스트, 시퀀스에서 중복 된 부분 제거, 교차, 조합, 차이 및 대칭 차이와 같은 수학 연산 계산이 있습니다. (다른 컨테이너가 를 참조하십시오 내장 된 DICT, 목록 및 튜플 클래스, 컬렉션 모듈.)

0

사전 좋은 소리 덕분이었다. 그러나이 방법으로 끝났습니다.

for link in newLinks: #check every link in 'newLinks' 
      if link not in toCrawl: #if the link is not in 'toCrawl'... 
       toCrawl.append([link,depthFound+1]) #add the link to 'toCrawl' with the 'depthFound'