2017-11-20 11 views
0

가장 인기있는 웹 링크를 인쇄하고 나타나는 횟수를 계산하는 데 어려움이 있습니다. 대신 모든 링크가 인쇄되고 아무 것도 계산되지 않습니다. 내 코드에 내 Counter.most_common(1)을 잘못 배치했는지 확실하지 않습니다. 나는 그것을 아래에 붙여 넣었다. 아무것도 할 수 없지만, 웹 링크를 복제하는 것 때문에 for 루프의 목록에서 가장 일반적인 객체 찾기

toplinks = [] 

for i in itb: 
if "://" in i[1].lower() and '2015-11-16' in i[2].lower(): 
    itb_links = [c for c in i[1].split(" ") if "://" in c.lower()] 
    ##toplinks = collections.Counter(itb_links).most_common(1) 
    toplinks.append(itb_links) 
    for i in toplinks: 
     print ("Top web link: " , i[0] , i[1]) 

나는 for 루프 내 toplinks에서 댓글을 달았습니다. 이견있는 사람?

+0

'itb'란 무엇입니까? 샘플 입/출력을 제공 할 수 있습니까? –

+0

순진한 해결책은 목록을 반복하고 각 반복마다 고유 항목의 두 번째 목록에서 해당 항목에 대한 카운터를 증가시키는 것입니다. 결국, 두 번째 목록의 항목을 가장 높은 수로 반환하십시오. –

답변

0

itb 개체를 재구성하는 방법에 대해 잘 모릅니다. 목록에서 Counter을 초기화하는 방법을 보여주는 간단한 예입니다.

[('http://go2.invalid', 59), ('http://go5.invalid', 59), ('http://go12.invalid', 57)] 

자세한 내용은 docs on collections을 참조하십시오 뭔가를 인쇄합니다

import collections 
import random 

#generate some random links 
links = ["http://go{}.invalid".format(random.randint(1, 20)) for _ in range(1000)] 
link_counter = collections.Counter(links) 
print(link_counter.most_common(3)) 

.