Paradox wrote:

> I have some data structured like this:
> 
> {'B002':'NRP 2014','B003':'HBB 2015'}
> 
> Basically account numbers and project names, each account number has a
> project name.  I represent it in a dictionary because that seemed the
> best way to keep the account numbers and project names together.  I want
> to save that information to a file, CSV seemed the easiest format
> (though I am open to suggestions if there is a better way!).  I expected
> I could write a function that would create a CSV file that looks like
> this:
> 
> B002,NRP 2014
> B003,HBB 2015
> 
> I thought the DictWriter method of the CSV module should do the trick so
> wrote this:
> 
> def write_fqas(fqa_csv,fqa_dict):
>      with open('fqa_csv','w') as csvfile:
>          writer = csv.DictWriter(csvfile,fieldnames=['FQA','Description']
>          writer.writerows(fqa_dict)
> 
> This didn't yield the results I was looking for, instead it raises
> 
> ValueError: dict contains fields not in fieldnames: 'B', '0', '0', '2'
> 
> It seems to be parsing through the key of the first item in the
> dictionary rather than simply saving it to the CSV file as the first
> field on a line (like I expected).  Obviously there is something about
> how csv.DictWriter works that I don't understand.

DictWriter expects a sequence of dicts where the keys are the column names. 
Example:

>>> import csv
>>> import sys
>>> data = [
... {"FQA": "B002", "Description": "NRP 2014"},
... {"FQA": "B003", "Description": "HBB 2015"},
... ]
>>> writer = csv.DictWriter(sys.stdout, fieldnames=["FQA", "Description"])
>>> writer.writerows(data)
B002,NRP 2014
B003,HBB 2015

As you want to write both keys and values as a column you can pass the dict 
items() to a normal csv.writer:

>>> data = {'B002':'NRP 2014','B003':'HBB 2015'}
>>> writer = csv.writer(sys.stdout)
>>> writer.writerows(data.items())
B002,NRP 2014
B003,HBB 2015

> How rude of me, I neglected to note I am using Python 3.4.3.

And now you're top-posting to make it even worse ;)


_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor

Reply via email to