diff options
author | Michael Selik <mike@selik.org> | 2019-01-31 00:47:53 -0800 |
---|---|---|
committer | Raymond Hettinger <rhettinger@users.noreply.github.com> | 2019-01-31 00:47:53 -0800 |
commit | 9f3f0931cfc58498086d287226650599a97412bb (patch) | |
tree | ec55acd86918244262c99c5d8c888932f6459dd2 | |
parent | a1f9a3332bd4767e47013ea787022f06b6dbcbbd (diff) | |
download | cpython-git-9f3f0931cfc58498086d287226650599a97412bb.tar.gz |
bpo-34003: Use dict instead of OrderedDict in csv.DictReader (GH-8014)
-rw-r--r-- | Doc/library/csv.rst | 12 | ||||
-rw-r--r-- | Lib/csv.py | 3 | ||||
-rw-r--r-- | Misc/NEWS.d/next/Library/2018-06-29-13-05-01.bpo-34003.Iu831h.rst | 2 |
3 files changed, 9 insertions, 8 deletions
diff --git a/Doc/library/csv.rst b/Doc/library/csv.rst index 049537eff8..17534fcc46 100644 --- a/Doc/library/csv.rst +++ b/Doc/library/csv.rst @@ -150,12 +150,12 @@ The :mod:`csv` module defines the following classes: dialect='excel', *args, **kwds) Create an object that operates like a regular reader but maps the - information in each row to an :mod:`OrderedDict <collections.OrderedDict>` - whose keys are given by the optional *fieldnames* parameter. + information in each row to a :class:`dict` whose keys are given by the + optional *fieldnames* parameter. The *fieldnames* parameter is a :term:`sequence`. If *fieldnames* is omitted, the values in the first row of file *f* will be used as the - fieldnames. Regardless of how the fieldnames are determined, the ordered + fieldnames. Regardless of how the fieldnames are determined, the dictionary preserves their original ordering. If a row has more fields than fieldnames, the remaining data is put in a @@ -166,8 +166,8 @@ The :mod:`csv` module defines the following classes: All other optional or keyword arguments are passed to the underlying :class:`reader` instance. - .. versionchanged:: 3.6 - Returned rows are now of type :class:`OrderedDict`. + .. versionchanged:: 3.8 + Returned rows are now of type :class:`dict`. A short usage example:: @@ -181,7 +181,7 @@ The :mod:`csv` module defines the following classes: John Cleese >>> print(row) - OrderedDict([('first_name', 'John'), ('last_name', 'Cleese')]) + {'first_name': 'John', 'last_name': 'Cleese'} .. class:: DictWriter(f, fieldnames, restval='', extrasaction='raise', \ diff --git a/Lib/csv.py b/Lib/csv.py index 58624af905..eeeedabc6b 100644 --- a/Lib/csv.py +++ b/Lib/csv.py @@ -11,7 +11,6 @@ from _csv import Error, __version__, writer, reader, register_dialect, \ __doc__ from _csv import Dialect as _Dialect -from collections import OrderedDict from io import StringIO __all__ = ["QUOTE_MINIMAL", "QUOTE_ALL", "QUOTE_NONNUMERIC", "QUOTE_NONE", @@ -117,7 +116,7 @@ class DictReader: # values while row == []: row = next(self.reader) - d = OrderedDict(zip(self.fieldnames, row)) + d = dict(zip(self.fieldnames, row)) lf = len(self.fieldnames) lr = len(row) if lf < lr: diff --git a/Misc/NEWS.d/next/Library/2018-06-29-13-05-01.bpo-34003.Iu831h.rst b/Misc/NEWS.d/next/Library/2018-06-29-13-05-01.bpo-34003.Iu831h.rst new file mode 100644 index 0000000000..7bc5e1200a --- /dev/null +++ b/Misc/NEWS.d/next/Library/2018-06-29-13-05-01.bpo-34003.Iu831h.rst @@ -0,0 +1,2 @@ +csv.DictReader now creates dicts instead of OrderedDicts. Patch by Michael +Selik. |