<br><div class="gmail_quote">On Tue, May 3, 2011 at 12:56 PM, Paul Rubin <span dir="ltr"><no.email@nospam.invalid></span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
"Alex van der Spek" <<a href="mailto:zdoor@xs4all.nl">zdoor@xs4all.nl</a>> writes:<br>
> refd=dict.fromkeys(csvr.fieldnames,[])  ...<br>
<div class="im">> I do not understand why this appends v to every key k each time.<br>
<br>
</div>You have initialized every element of refd to the same list.  Try<br>
<br>
    refd = dict((k,[]) for k in csvr.fieldnames)<br>
<br>
instead.<br>
<div><div></div><div class="h5">--<br>
<a href="http://mail.python.org/mailman/listinfo/python-list" target="_blank">http://mail.python.org/mailman/listinfo/python-list</a><br>
</div></div></blockquote></div><br>Agreed.  Here's another way: using a dictionary comprehension - a feature in 2.7 and up:<br><br>#!/usr/local/cpython-2.7/bin/python<br><br>import csv<br>import pprint<br><br>csvf=open('foo.csv','rb')<br>
csvr=csv.DictReader(csvf)<br>#refd=dict.fromkeys(csvr.fieldnames, [])<br>refd = { key: [] for key in csvr.fieldnames }<br>for row in csvr:<br>   for (k,v) in row.items():<br>      refd[k].append(v)<br><br>pprint.pprint(refd)<br>
<br>