diff -r 685ccab91706 Lib/weakref.py --- a/Lib/weakref.py Tue Oct 11 08:06:26 2016 +0200 +++ b/Lib/weakref.py Thu Oct 13 21:23:15 2016 +0300 @@ -110,7 +110,7 @@ class WeakValueDictionary(collections.Mu if self is not None: if self._iterating: self._pending_removals.append(wr.key) - else: + elif self.data[wr.key]() is None: del self.data[wr.key] self._remove = remove # A list of keys to be removed