0

9.4 Write a program to read through the mbox-short.txt and figure out who has sent the greatest number of mail messages. The program looks for 'From ' lines and takes the second word of those lines as the person who sent the mail. The program creates a Python dictionary that maps the sender's mail address to a count of the number of times they appear in the file. After the dictionary is produced, the program reads through the dictionary using a maximum loop to find the most prolific committer.

name = input("Enter file:")
if len(name) < 1 : name = "mbox-short.txt"
handle = open(name)

lst = list()
for line in handle:
    if not line.startswith("From"): continue
    line = line.split()
    lst.append(line[1])

counts = dict()
for word in lst:
    counts[word] = counts.get(word, 0) + 1

bigword = None
bigcount = None
for word,count in counts.items():
    if bigcount is None or count > bigcount:
        bigword = word
        bigcount = count
        
print(bigword,bigcount)

This is my code but it is giving output of "10" instead of "5". I think it is being double counted, but not sure how to resolve. What are some debugging steps I can take to fix this?

I tried printing out lst and count already.

  • Basically you want to count occurrances of names in `lst` right? You could do that with `collections.Counter` - maybe even just to verify the list is correct and which part to debug. See https://stackoverflow.com/a/5829377/18482459 – Firefighting Physicist Nov 07 '22 at 08:10
  • 1
    Why do you think that `10` is not correct? What does `lst.count('var')` return with `var` being the name of the person that you think sent the most mails? – Firefighting Physicist Nov 07 '22 at 08:20
  • Cannot reproduce on [repl.it](https://replit.com/@trincottrincots/httpsstackoverflowcomq743435265459839#main.py). Voting to close. – trincot Nov 07 '22 at 12:39
  • @FirefightingPhysicist the given answer is 5, so my answer is not correct. `lst.count('var')` returns 10. Thank you for the collections.Counter though i will try it out! – PixelPusher42 Nov 11 '22 at 17:27

0 Answers0