私はcoursera - Pythonからの課題を解決しようとしています。Python:courseraの割り当て - 辞書の章
mbox-short.txtを読んで、誰が最も多くのメールメッセージを送信したのかを把握するプログラムを作成します。プログラムは 'From'行を探し、その行の2番目の単語をメールを送信した人物とみなします。このプログラムは、送信者のメールアドレスをファイルに表示された回数のカウントにマップするPython辞書を作成します。ディクショナリが生成された後、プログラムはディクショナリを介して最大ループを使用して、最も多量のコミッタを見つける。
name = raw_input("Enter file:")
if len(name) < 1 : name = "mbox-short.txt"
handle = open(name)
lst = list()
for line in handle:
line = line.strip()
if line.startswith("From"):
words = line.split()
email = words[1]
lst.append(email)
dct = dict()
for email in lst:
dct[email] = dct.get(email,0)+1
bigcount = None
email_address = None
for key,value in dct.items():
if bigcount is None or value > bigcount:
bigcount = value
email_address = key
print email_address, bigcount
私のコードが実行されますが、所望の出力は次のようになります。[email protected] 5、しかし、私は何とか取得出力を「倍増」:10
[email protected]誰もがこの問題を解決しましたか?あなたは私が逃したものをヒントにしてください。大いに感謝する!
dictの他のメールの出力を印刷して、そのメールに固有のものではないことを確認できますか? –
すべてがうまく見えますが、ifを入力する行を印刷して問題を表示し、サンプルファイルを表示することができます。 – polku
'for email in lst:' duplicated、多分あなたは2つ以上の行に同じテキストを持っています。 dictで処理する前に、入力テキストで一意の値を取得します。 – dsgdfg