[New-bugs-announce] [issue46925] Replace key if not identical to old key in dict

Malthe Borch report at bugs.python.org
Fri Mar 4 18:25:53 EST 2022


New submission from Malthe Borch <mborch at gmail.com>:

When a key that is equal to an existing key (but not the same object identity) is used to set a new value, the key itself is not replaced.

This manifests perhaps most clearly in `weakref.WeakKeyDictionary` where keys can mysteriously disappear.

Consider two equal keys, k1 and k2:

d = WeakKeyDictionary()
d[k1] = 1
d[k2] = 2
del k1

We would expect the dictionary to have a single entry k2 => 2. But in fact it is empty now.

----------
components: Library (Lib)
messages: 414554
nosy: malthe
priority: normal
pull_requests: 29811
severity: normal
status: open
title: Replace key if not identical to old key in dict
type: behavior

_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue46925>
_______________________________________


More information about the New-bugs-announce mailing list