Re: Appending to dictionary of lists
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
Re: Appending to dictionary of lists
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
Re: Appending to dictionary of lists
Thank you! Would never have found that by myself. Paul Rubin no.email@nospam.invalid wrote in message news:7x7ha75zib@ruckus.brouhaha.com... 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