[Python-Dev] Making sure dictionary adds/deletes during iteration always raise exception

Guido van Rossum guido at python.org
Tue Dec 13 12:48:35 EST 2016

On Tue, Dec 13, 2016 at 8:52 AM, Eric V. Smith <eric at trueblade.com> wrote:

> > On Dec 13, 2016, at 11:42 AM, Raymond Hettinger <
> raymond.hettinger at gmail.com> wrote:
> >
> >> On Dec 13, 2016, at 1:51 AM, Max Moroz <maxmoroz at gmail.com> wrote:
> >>
> >> Would it be worth ensuring that an exception is ALWAYS raised if a key
> >> is added to or deleted from a dictionary during iteration?
> >> <snip>
> >> I suspect the cost of a more comprehensive error reporting is not
> >> worth the benefit, but I thought I'd ask anyway.
> >
> > I think what we have has proven itself to be good enough to detect the
> common cases, and it isn't worth it to have dicts grow an extra field which
> has to be checked or updated on every operation.
> >
> I agree that we shouldn't complicate things, but wouldn't PEP 509 be a
> cheap way to check this?

IIUC the private version gets updated every time the dict gets modified --
but what we need here should only trigger when a key is added or removed,
not when a value is updated. (It's a guarantee that updating the value
doesn't change the iteration order -- though perhaps it isn't spelled out,
it's implicit.)

I agree with Raymond that we should not change anything.

--Guido van Rossum (python.org/~guido)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-dev/attachments/20161213/d17e5f90/attachment.html>

More information about the Python-Dev mailing list