2017-11-20 13 views
0

最も人気のあるWebリンクを印刷して表示される回数をカウントするのが難しいです。代わりに、すべてのリンクが印刷され、何もカウントされません。自分のコードに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]) 

何もしませんが、Webリンクを複製するように見えるので、私は私のtoplinks forループではコメントアウト。何かご意見は?

+0

「itb」とは何ですか?いくつかのサンプル入力/出力を提供できますか? –

+0

純粋な解決策は、リストを反復することであり、反復ごとに、一意のエントリの第2のリスト内の対応するエントリのカウンタをインクリメントする。最後に、2番目のリストのエントリを最も高い数で返します。 –

答えて

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)) 

関連する問題