diff options
Diffstat (limited to 'Lib/collections.py')
-rw-r--r-- | Lib/collections.py | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/Lib/collections.py b/Lib/collections.py index 331937827c..0ff567306a 100644 --- a/Lib/collections.py +++ b/Lib/collections.py @@ -27,11 +27,11 @@ class OrderedDict(dict, MutableMapping): except AttributeError: # Note the underlying data structure for this class is likely to # change in the future. Do not rely on it or access it directly. - self.__keys = [] + self.__keys = deque() self.update(*args, **kwds) def clear(self): - del self.__keys[:] + self.__keys.clear() dict.clear(self) def __setitem__(self, key, value): @@ -58,16 +58,20 @@ class OrderedDict(dict, MutableMapping): def __reduce__(self): items = [[k, self[k]] for k in self] + tmp = self.__keys + del self.__keys inst_dict = vars(self).copy() - inst_dict.pop('__keys', None) - return (self.__class__, (items,), inst_dict) + self.__keys = tmp + if inst_dict: + return (self.__class__, (items,), inst_dict) + return self.__class__, (items,) setdefault = MutableMapping.setdefault update = MutableMapping.update pop = MutableMapping.pop def keys(self): - return self.__keys[:] + return list(self.__keys) def values(self): return map(self.__getitem__, self.__keys) |