[Tutor] Dictionary Issue
Mark Lawrence
breamoreboy at yahoo.co.uk
Thu Aug 6 17:28:44 CEST 2015
On 06/08/2015 05:22, Ltc Hotspot wrote:
Please don't top post here, it makes following long threads difficult.
> Mark,
>
> Replace count[address]= count.get(address,0) +1 with c =
> Counter(['address'])?
Try it at the interactive prompt and see what happens.
>
> Regards,
> Hal
>
> On Wed, Aug 5, 2015 at 9:03 PM, Mark Lawrence <breamoreboy at yahoo.co.uk>
> wrote:
>
>> On 05/08/2015 23:58, Ltc Hotspot wrote:
>>
>>> Hi Mark,
>>>
>>> Address identifies the email address with the maximum number of sends:
>>> cwen at iupui.edu.
>>>
>>> Secondly, we are missing a count on the number of messages sent by
>>> cwen at iupui.edu, i.e., 5.
>>>
>>> Thirdly, maxval 'none' is not defined on line # 24
>>>
>>> Questions: How do we define the value of none for the key maxval and
>>> retrieve a number count on the number of messages sent by cwen at iupui.edu.
>>>
>>>
>>> NameError:
>>>
>>> Traceback (most recent call last)
>>> C:\Users\vm\Desktop\apps\docs\Python\assignment_9_4_5.py in <module>()
>>> 22 ## find the greatest number of mail messages.
>>> 23
>>> ---> 24 maxval = none
>>> 25 maxkee = none
>>> 26 for kee, val in count.items():
>>>
>>> NameError: name 'none' is not defined
>>>
>>> In [52]: print address
>>> cwen at iupui.edu
>>>
>>> Revised data:
>>>
>>>
>>> ## The program looks for 'From ' lines and takes the second
>>> ## word of those lines as the person who sent the mail.
>>>
>>> fname = raw_input("Enter file name: ")
>>> handle = open (fname, 'r')
>>> for line in handle:
>>> if line.startswith("From: "):
>>> address = line.split()[1]
>>>
>>>
>>> ## 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.
>>>
>>> count = dict()
>>> for wrd in address:
>>> count[wrd]= count.get(wrd,0) +1
>>>
>>> ## After the dictionary is produced, the program reads
>>> ## through the dictionary using a maximum loop to
>>> ## find the greatest number of mail messages.
>>>
>>> maxval = none
>>> maxkee = none
>>> for kee, val in count.items():
>>> if maxval == none or maxval <val:
>>> maxval = val
>>> maxkee = kee
>>>
>>>
>> You can greatly simplify all of the above code if you use a Counter from
>> the collections module
>> https://docs.python.org/3/library/collections.html#collections.Counter
>>
>> --
>> My fellow Pythonistas, ask not what our language can do for you, ask
>> what you can do for our language.
>>
>> Mark Lawrence
--
My fellow Pythonistas, ask not what our language can do for you, ask
what you can do for our language.
Mark Lawrence
More information about the Tutor
mailing list