On Tue, May 3, 2011 at 12:56 PM, Paul Rubin <no.email@nospam.invalid> wrote:

> "Alex van der Spek" <zd...@xs4all.nl> writes:
> > refd=dict.fromkeys(csvr.fieldnames,[])  ...
> > I do not understand why this appends v to every key k each time.
>
> You have initialized every element of refd to the same list.  Try
>
>    refd = dict((k,[]) for k in csvr.fieldnames)
>
> instead.
> --
> http://mail.python.org/mailman/listinfo/python-list
>

Agreed.  Here's another way: using a dictionary comprehension - a feature in
2.7 and up:

#!/usr/local/cpython-2.7/bin/python

import csv
import pprint

csvf=open('foo.csv','rb')
csvr=csv.DictReader(csvf)
#refd=dict.fromkeys(csvr.fieldnames, [])
refd = { key: [] for key in csvr.fieldnames }
for row in csvr:
   for (k,v) in row.items():
      refd[k].append(v)

pprint.pprint(refd)
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to