diff -r 482590320549 Lib/csv.py --- a/Lib/csv.py Sun Aug 25 19:06:16 2013 -0700 +++ b/Lib/csv.py Fri Aug 30 20:54:02 2013 -0700 @@ -143,7 +143,7 @@ def _dict_to_list(self, rowdict): if self.extrasaction == "raise": - wrong_fields = [k for k in rowdict if k not in self.fieldnames] + wrong_fields = rowdict.keys() - self.fieldnames if wrong_fields: raise ValueError("dict contains fields not in fieldnames: " + ", ".join(wrong_fields)) diff -r 482590320549 Lib/test/test_csv.py --- a/Lib/test/test_csv.py Sun Aug 25 19:06:16 2013 -0700 +++ b/Lib/test/test_csv.py Fri Aug 30 20:54:02 2013 -0700 @@ -579,6 +579,12 @@ fileobj = StringIO() self.assertRaises(TypeError, csv.DictWriter, fileobj) + def test_write_long(self): + fileobj = StringIO() + writer = csv.DictWriter(fileobj, ['f1','f2'], extrasaction="raise") + dictrow = {'f0':0, 'f1':1, 'f2':2, 'f3':3} + self.assertRaises(ValueError, csv.DictWriter.writerow, writer, dictrow) + def test_read_dict_fields(self): with TemporaryFile("w+") as fileobj: fileobj.write("1,2,abc\r\n")