]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-34003: Use dict instead of OrderedDict in csv.DictReader (GH-8014)
authorMichael Selik <mike@selik.org>
Thu, 31 Jan 2019 08:47:53 +0000 (00:47 -0800)
committerRaymond Hettinger <rhettinger@users.noreply.github.com>
Thu, 31 Jan 2019 08:47:53 +0000 (00:47 -0800)
Doc/library/csv.rst
Lib/csv.py
Misc/NEWS.d/next/Library/2018-06-29-13-05-01.bpo-34003.Iu831h.rst [new file with mode: 0644]

index 049537eff8984676a50a321d173eefb54a2d207d..17534fcc4615dc5c5d72cc4cbf725d5917edf1e3 100644 (file)
@@ -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', \
index 58624af9053493be42fb824d9df93c6759230e9a..eeeedabc6bb8a223ede2b783058172a44bd9678c 100644 (file)
@@ -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 (file)
index 0000000..7bc5e12
--- /dev/null
@@ -0,0 +1,2 @@
+csv.DictReader now creates dicts instead of OrderedDicts. Patch by Michael
+Selik.