2016-09-27 2 views
0

나는 coursera - Python에서 과제를 해결하려고합니다.Python : coursera 할당 - 사전 챕터

mbox-short.txt를 통해 읽고 가장 많은 수의 메일 메시지를 보낸 사람을 알아내는 프로그램을 작성하십시오. 이 프로그램은 '보낸 사람'행을 찾고 메일을 보낸 사람으로 그 행의 두 번째 단어를 사용합니다. 이 프로그램은 보낸 사람의 메일 주소를 파일에 나타나는 횟수의 수로 매핑하는 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] 10

사람이이 문제를 해결 했 : [email protected] 5,하지만 난 어떻게 든 얻을 출력은 "배"? 내가 놓친 것을 알려주시겠습니까? 정말 고마워!

+0

다른 이메일의 출력물을 인쇄하고 해당 이메일에 고유하지 않은지 확인하십시오. –

+0

모든 것이 정상적으로 보입니다. 문제를보기 위해 if를 입력하는 줄을 인쇄하고 예제 파일을 보여줄 수 있습니다. – polku

+0

'for email in lst :'duplicated, 어쩌면 두 줄 이상의 동일한 텍스트가있을 수 있습니다. dict에서 처리하기 전에 입력 텍스트에서 고유 한 값을 가져옵니다. – dsgdfg

답변

0

체크 라인 3726 및 3763. 부터까지 콜론이 있습니다. 나는 수동으로 검색하는 동안 그것을 놓치고 있다고 생각합니다.

라인 3726에서 [email protected] 목 1월 3일 16시 23분 48초 2008

라인 3763에서 :

[email protected]

그렇지 않으면 코드가 정확한지 확인하십시오. 올바른 출력을 보여줍니다.

+0

안녕하세요! 도움을 주신 모든 분들께 감사드립니다! – Ina

0

힌트를 보내 주셔서 감사합니다. 내가 수동으로 확인하고 대답은 10, 내 코드가 괜찮습니다 의미 올바른 것입니다. 원하는 "5"의 출력은 Coursera 과정에서 배정 된 것으로 나타났습니다 (내가 따라 할 때). 도움을 많이 주셔서 감사합니다!