[Tutor] Dictionary Issue
Ltc Hotspot
ltc.hotspot at gmail.com
Fri Aug 7 01:11:02 CEST 2015
On Thu, Aug 6, 2015 at 3:00 PM, Alan Gauld <alan.gauld at btinternet.com>
wrote:
> On 06/08/15 19:30, Ltc Hotspot wrote:
>
> I moved counter outside the loop and below dict, maxval = None
>> maxkee = None are both positioned outside the loop.
>>
>
> You moved counter but it is still a dict() and you
> don't use it anywhere.
>
> URL link to the revisions are available at http://tinyurl.com/nvzdw8k
>>
>> Question: How do I define Counter
>>
>
> Counter is defined for you in the collections module.
> So to use it you need to import collections and access it as
> collections.Counter.
>
> But did you read how to use it? It is a lot more than
> just a dictionary, it has many extra methods, some of
> which almost solve your problem for you. (Whether your
> teacher will approve of using Counter is another
> issue!)
>
> Revised code reads:
>> fname = raw_input("Enter file name: ")
>> handle = open (fname, 'r')
>>
>> counter = dict ()
>> c = Counter(['address'])
>>
>
> You only need to pass a list if you are adding multiple things.
>
> But by the same token you can add a list of items, such
> as email addresses. So if you had such a list you could
> create a Counter() to hold them and count them for you.
> And return the one with the highest value.
> Sound familiar?
>
> Please (re)read the Counter documentation.
> Then play with one in the >>> prompt.
> Don't expect us to just provide you with code, learn
> how it works for yourself. Experiment.
>
> The >>> prompt is your friend. You will learn more from that in 15 minutes
> than in a bunch of emails showing other peoples
> code.
>
> Alternatively forget about Counter and just go back to
> your dict(). You have written all the code you need already,
> you just need to assemble it in the correct order.
>
> maxval = None
>> maxkee = None
>>
>> for line in handle:
>> if line.startswith("From: "):
>> address = line.split()[1]
>>
>
> You are not storing the addresses anywhere.
>
> for maxkee, val in c.items():
>>
>> maxval = val
>> maxkee = kee
>>
>
> You are still not testing if its the maximum,
> you just keep overwriting the variables for
> each element.
>
> print maxkee and maxval
>>
>
> You still have an 'and' in there.
>
> --
> Alan G
> Author of the Learn to Program web site
> http://www.alan-g.me.uk/
> http://www.amazon.com/author/alan_gauld
> Follow my photo-blog on Flickr at:
> http://www.flickr.com/photos/alangauldphotos
>
>
> _______________________________________________
> Tutor maillist - Tutor at python.org
> To unsubscribe or change subscription options:
> https://mail.python.org/mailman/listinfo/tutor
>
Hi Alan,
Questions(1):Why does print line, prints blank space; and, (2) print
address prints a single email address:
View print results as follows:
In [70]: %run assignment_9_4_24.py
Enter file name: mbox-short.txt
ray at media.berkeley.edu 1
In [71]: print handle
<open file 'mbox-short.txt', mode 'r' at 0x00000000035576F0>
In [72]: print count
{'gopal.ramasammycook at gmail.com': 1, 'louis at media.berkeley.edu': 3,
'cwen at iupui.
edu': 5, 'antranig at caret.cam.ac.uk': 1, 'rjlowe at iupui.edu': 2,
'gsilver at umich.ed
u': 3, 'david.horwitz at uct.ac.za': 4, 'wagnermr at iupui.edu': 1, '
zqian at umich.edu':
4, 'stephen.marquard at uct.ac.za': 2, 'ray at media.berkeley.edu': 1}
In [73]: print line
In [74]: print address
cwen at iupui.edu
Question(3): why did the elements print count('keys') and print
count('items') fail?
View print commands as follows:
In [75]: dir (count)
Out[75]:
['__class__',
'__cmp__',
'__contains__',
'__delattr__',
'__delitem__',
'__doc__',
'__eq__',
'__format__',
'__ge__',
'__getattribute__',
'__getitem__',
'__gt__',
'__hash__',
'__init__',
'__iter__',
'__le__',
'__len__',
'__lt__',
'__ne__',
'__new__',
'__reduce__',
'__reduce_ex__',
'__repr__',
'__setattr__',
'__setitem__',
'__sizeof__',
'__str__',
'__subclasshook__',
'clear',
'copy',
'fromkeys',
'get',
'has_key',
'items',
'iteritems',
'iterkeys',
'itervalues',
'keys',
'pop',
'popitem',
'setdefault',
'update',
'values',
'viewitems',
'viewkeys',
'viewvalues']
In [76]:
---------------------------------------------------------------------------
TypeError
Traceback (most recent call last)
<ipython-input-76-35c8707b256e> in <module>()
----> 1 print count('items')
TypeError: 'dict' object is not callable
In [77]: print count('keys')
---------------------------------------------------------------------------
TypeError
Traceback (most recent call last)
<ipython-input-77-54ed4a05a3c7> in <module>()
----> 1 print count('keys')
TypeError: 'dict' object is not callable
In [78]:
Regards,
Hal
More information about the Tutor
mailing list