Kaydet (Commit) 9f3f0931 authored tarafından Michael Selik's avatar Michael Selik Kaydeden (comit) Raymond Hettinger

bpo-34003: Use dict instead of OrderedDict in csv.DictReader (GH-8014)

üst a1f9a333
...@@ -150,12 +150,12 @@ The :mod:`csv` module defines the following classes: ...@@ -150,12 +150,12 @@ The :mod:`csv` module defines the following classes:
dialect='excel', *args, **kwds) dialect='excel', *args, **kwds)
Create an object that operates like a regular reader but maps the Create an object that operates like a regular reader but maps the
information in each row to an :mod:`OrderedDict <collections.OrderedDict>` information in each row to a :class:`dict` whose keys are given by the
whose keys are given by the optional *fieldnames* parameter. optional *fieldnames* parameter.
The *fieldnames* parameter is a :term:`sequence`. If *fieldnames* is 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 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. dictionary preserves their original ordering.
If a row has more fields than fieldnames, the remaining data is put in a 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: ...@@ -166,8 +166,8 @@ The :mod:`csv` module defines the following classes:
All other optional or keyword arguments are passed to the underlying All other optional or keyword arguments are passed to the underlying
:class:`reader` instance. :class:`reader` instance.
.. versionchanged:: 3.6 .. versionchanged:: 3.8
Returned rows are now of type :class:`OrderedDict`. Returned rows are now of type :class:`dict`.
A short usage example:: A short usage example::
...@@ -181,7 +181,7 @@ The :mod:`csv` module defines the following classes: ...@@ -181,7 +181,7 @@ The :mod:`csv` module defines the following classes:
John Cleese John Cleese
>>> print(row) >>> print(row)
OrderedDict([('first_name', 'John'), ('last_name', 'Cleese')]) {'first_name': 'John', 'last_name': 'Cleese'}
.. class:: DictWriter(f, fieldnames, restval='', extrasaction='raise', \ .. class:: DictWriter(f, fieldnames, restval='', extrasaction='raise', \
......
...@@ -11,7 +11,6 @@ from _csv import Error, __version__, writer, reader, register_dialect, \ ...@@ -11,7 +11,6 @@ from _csv import Error, __version__, writer, reader, register_dialect, \
__doc__ __doc__
from _csv import Dialect as _Dialect from _csv import Dialect as _Dialect
from collections import OrderedDict
from io import StringIO from io import StringIO
__all__ = ["QUOTE_MINIMAL", "QUOTE_ALL", "QUOTE_NONNUMERIC", "QUOTE_NONE", __all__ = ["QUOTE_MINIMAL", "QUOTE_ALL", "QUOTE_NONNUMERIC", "QUOTE_NONE",
...@@ -117,7 +116,7 @@ class DictReader: ...@@ -117,7 +116,7 @@ class DictReader:
# values # values
while row == []: while row == []:
row = next(self.reader) row = next(self.reader)
d = OrderedDict(zip(self.fieldnames, row)) d = dict(zip(self.fieldnames, row))
lf = len(self.fieldnames) lf = len(self.fieldnames)
lr = len(row) lr = len(row)
if lf < lr: if lf < lr:
......
csv.DictReader now creates dicts instead of OrderedDicts. Patch by Michael
Selik.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment