summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Jerdonek <chris.jerdonek@gmail.com>2012-10-13 10:49:30 (GMT)
committerChris Jerdonek <chris.jerdonek@gmail.com>2012-10-13 10:49:30 (GMT)
commitdef5df6c537224ec4215061c7abe2b54b75cfad2 (patch)
treea4d76e80c7c1a816a9bff489297c68a5a658cd46
parentd9edd82b7fbf3260cf6a1d2dee71a57db81553e5 (diff)
downloadcpython-def5df6c537224ec4215061c7abe2b54b75cfad2.zip
cpython-def5df6c537224ec4215061c7abe2b54b75cfad2.tar.gz
cpython-def5df6c537224ec4215061c7abe2b54b75cfad2.tar.bz2
Issue #16206: Backport dict documentation improvements from 3.2.
Improve the documentation of the dict constructor. This change includes replacing the single-line signature documentation with a more complete multiple-line signature.
-rw-r--r--Doc/library/functions.rst13
-rw-r--r--Doc/library/stdtypes.rst61
2 files changed, 43 insertions, 31 deletions
diff --git a/Doc/library/functions.rst b/Doc/library/functions.rst
index 0314ca5..84eed5c 100644
--- a/Doc/library/functions.rst
+++ b/Doc/library/functions.rst
@@ -275,14 +275,17 @@ available. They are listed here in alphabetical order.
.. _func-dict:
-.. function:: dict([arg])
+.. function:: dict(**kwarg)
+ dict(mapping, **kwarg)
+ dict(iterable, **kwarg)
:noindex:
- Create a new data dictionary, optionally with items taken from *arg*.
- The dictionary type is described in :ref:`typesmapping`.
+ Create a new dictionary. The :class:`dict` object is the dictionary class.
+ See :class:`dict` and :ref:`typesmapping` for documentation about this
+ class.
- For other containers see the built in :class:`list`, :class:`set`, and
- :class:`tuple` classes, and the :mod:`collections` module.
+ For other containers see the built-in :class:`list`, :class:`set`, and
+ :class:`tuple` classes, as well as the :mod:`collections` module.
.. function:: dir([object])
diff --git a/Doc/library/stdtypes.rst b/Doc/library/stdtypes.rst
index 4dfed58..846f0ca 100644
--- a/Doc/library/stdtypes.rst
+++ b/Doc/library/stdtypes.rst
@@ -1956,32 +1956,41 @@ Dictionaries can be created by placing a comma-separated list of ``key: value``
pairs within braces, for example: ``{'jack': 4098, 'sjoerd': 4127}`` or ``{4098:
'jack', 4127: 'sjoerd'}``, or by the :class:`dict` constructor.
-.. class:: dict([arg])
-
- Return a new dictionary initialized from an optional positional argument or from
- a set of keyword arguments. If no arguments are given, return a new empty
- dictionary. If the positional argument *arg* is a mapping object, return a
- dictionary mapping the same keys to the same values as does the mapping object.
- Otherwise the positional argument must be a sequence, a container that supports
- iteration, or an iterator object. The elements of the argument must each also
- be of one of those kinds, and each must in turn contain exactly two objects.
- The first is used as a key in the new dictionary, and the second as the key's
- value. If a given key is seen more than once, the last value associated with it
- is retained in the new dictionary.
-
- If keyword arguments are given, the keywords themselves with their associated
- values are added as items to the dictionary. If a key is specified both in the
- positional argument and as a keyword argument, the value associated with the
- keyword is retained in the dictionary. For example, these all return a
- dictionary equal to ``{"one": 1, "two": 2}``:
-
- * ``dict(one=1, two=2)``
- * ``dict({'one': 1, 'two': 2})``
- * ``dict(zip(('one', 'two'), (1, 2)))``
- * ``dict([['two', 2], ['one', 1]])``
-
- The first example only works for keys that are valid Python
- identifiers; the others work with any valid keys.
+.. class:: dict(**kwarg)
+ dict(mapping, **kwarg)
+ dict(iterable, **kwarg)
+
+ Return a new dictionary initialized from an optional positional argument
+ and a possibly empty set of keyword arguments.
+
+ If no positional argument is given, an empty dictionary is created.
+ If a positional argument is given and it is a mapping object, a dictionary
+ is created with the same key-value pairs as the mapping object. Otherwise,
+ the positional argument must be an :term:`iterator` object. Each item in
+ the iterable must itself be an iterator with exactly two objects. The
+ first object of each item becomes a key in the new dictionary, and the
+ second object the corresponding value. If a key occurs more than once, the
+ last value for that key becomes the corresponding value in the new
+ dictionary.
+
+ If keyword arguments are given, the keyword arguments and their values are
+ added to the dictionary created from the positional argument. If a key
+ being added is already present, the value from the keyword argument
+ replaces the value from the positional argument.
+
+ To illustrate, the following examples all return a dictionary equal to
+ ``{"one": 1, "two": 2}``::
+
+ >>> a = dict(one=1, two=2)
+ >>> b = dict({'one': 1, 'two': 2})
+ >>> c = dict(zip(('one', 'two'), (1, 2)))
+ >>> d = dict([['two', 2], ['one', 1]])
+ >>> e = {"one": 1, "two": 2}
+ >>> a == b == c == d == e
+ True
+
+ Providing keyword arguments as in the first example only works for keys that
+ are valid Python identifiers. Otherwise, any valid keys can be used.
.. versionadded:: 2.2