diff --git a/Lib/collections.py b/Lib/collections.py
index 3319378..0ff5673 100644
--- a/Lib/collections.py
+++ b/Lib/collections.py
@@ -27,11 +27,11 @@
         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 @@
 
     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)
