The description of dictionary comparison was out of date. Rather than

try to explain the complex general scheme we actually use now, I decided
to spell out only what equality means (which is easy to explain and
intuitive), leaving the other outcomes unspecified beyond consistency.
This commit is contained in:
Tim Peters 2001-10-01 20:22:45 +00:00
parent 092a7a80fd
commit 20524dbf36
1 changed files with 12 additions and 9 deletions

View File

@ -191,10 +191,10 @@ When a comma-separated list of expressions is supplied, its elements are
evaluated from left to right and placed into the list object in that
order. When a list comprehension is supplied, it consists of a
single expression followed by at least one \keyword{for} clause and zero or
more \keyword{for} or \keyword{if} clauses. In this
more \keyword{for} or \keyword{if} clauses. In this
case, the elements of the new list are those that would be produced
by considering each of the \keyword{for} or \keyword{if} clauses a block,
nesting from
nesting from
left to right, and evaluating the expression to produce a list element
each time the innermost block is reached.
\obindex{list}
@ -815,13 +815,16 @@ Tuples and lists are compared lexicographically using comparison of
corresponding items.
\item
Mappings (dictionaries) are compared through lexicographic
comparison of their sorted (key, value) lists.\footnote{
This is expensive since it requires sorting the keys first,
but it is about the only sensible definition. An earlier version of
Python compared dictionaries by identity only, but this caused
surprises because people expected to be able to test a dictionary for
emptiness by comparing it to \code{\{\}}.}
Mappings (dictionaries) compare equal if and only if their sorted
(key, value) lists compare equal.\footnote{The implementation computes
this efficiently, without constructing lists or sorting.}
Outcomes other than equality are resolved consistently, but are not
otherwise defined.\footnote{Earlier versions of Python used\
lexicographic comparison of the sorted (key, value) lists, but this
was very expensive for the common case of comparing for equality. An
even earlier version of Python compared dictionaries by identity only,
but this caused surprises because people expected to be able to test
a dictionary for emptiness by comparing it to \code{\{\}}.}
\item
Most other types compare unequal unless they are the same object;