[Tutor] HELP!!

Alan Gauld alan.gauld at btinternet.com
Tue Jan 12 18:57:09 EST 2016


On 12/01/16 20:36, Chelsea G wrote:

> data = defaultdict(list)
> 
> class dictionary:
>    with open ('weekly_20160102.csv', 'rb') as f:
>       reader = csv.reader(f)
>       next(reader, None)
>       for row in reader:
>           data[row[2]].append(row[3]) 
>       for key in data.keys():
>           c = Counter(data[key])
>           for value in c:
>              if c[value] >= 5:
>                 print key, ':', value, ':', c[value]
>              elif c[value] <= 1:
>                 print 'other', ':', sum(c.values())

I think that's what your code was supposed to look like.
Am I right?

If so you have all the code inside a class definition.
But you do nothing with the class and it certainly doesn't
define a dictionary. Its not clear what the class line is for.

That aside, This implies the data format has 4 columns
and you are throwing away the first two and using
the third as a key to find the fourth.
Is that correct? It's certainly not what your introductory
paragraph said.

But I don't understand what you think the Counter is doing?
You are counting how many there are of each key, but a dict
can only have unique keys so it must always be 1.

Then you iterate over the Counter and none of that makes
any sense. I can't even think what you are trying to do.

Can you confirm the code layout - ideally by posting a plain
text version. And explain how you think it is supposed to
work.

Also please show us a sample (3-10 lines) of input data
and what exactly you expect the output to be.

Thanks,

-- 
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




More information about the Tutor mailing list