Don't worry I just misindented

Viewed 32

#I have this dataset after filtering:

tephen.marquard@uct.ac.za
louis@media.berkeley.edu
zqian@umich.edu
rjlowe@iupui.edu
zqian@umich.edu
rjlowe@iupui.edu
cwen@iupui.edu
cwen@iupui.edu
gsilver@umich.edu
gsilver@umich.edu
zqian@umich.edu
gsilver@umich.edu
wagnermr@iupui.edu
zqian@umich.edu
antranig@caret.cam.ac.uk
gopal.ramasammycook@gmail.com
david.horwitz@uct.ac.za
david.horwitz@uct.ac.za
david.horwitz@uct.ac.za
david.horwitz@uct.ac.za
stephen.marquard@uct.ac.za
louis@media.berkeley.edu
louis@media.berkeley.edu
ray@media.berkeley.edu
cwen@iupui.edu
cwen@iupui.edu
cwen@iupui.edu.  

I want to count the number of emails for each user using a dictionary. I used the code(this data is called emails):

dic=dict()
lst=list()
handle = open('mbox-short.txt')
for words in handle:
        if words.startswith("From "):
         g=words.split()
         emails=g[1]
         lst.append(emails)
         for x in lst: 
            dic[x]=dic.get(x,0)+1 
print(dic) 

and these are the results:

{'stephen.marquard@uct.ac.za': 34, 'louis@media.berkeley.edu': 37, 'zqian@umich.edu': 79, 'rjlowe@iupui.edu': 46, 'cwen@iupui.edu': 47, 'gsilver@umich.edu': 53, 'wagnermr@iupui.edu': 15, 'antranig@caret.cam.ac.uk': 13, 'gopal.ramasammycook@gmail.com': 12, 'david.horwitz@uct.ac.za': 38, 'ray@media.berkeley.edu': 4}   

Why is the count so high in comparison to the actual number of emails and how can I fix this.
sorry for the mess it is my first time posting here.

1 Answers

The second for loop must be outside of the first one. :)

dic=dict()
lst=list()
handle = open('mbox-short.txt')
for words in handle:
        if words.startswith("From "):
         g=words.split()
         emails=g[1]
         lst.append(emails)

for x in lst: 
    dic[x]=dic.get(x,0)+1 
print(dic) 
Related