[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