Separate initialization from clearing.
diff --git a/Lib/collections.py b/Lib/collections.py
index 4f3f726..002ce97 100644
--- a/Lib/collections.py
+++ b/Lib/collections.py
@@ -41,14 +41,15 @@
         try:
             self.__root
         except AttributeError:
-            self.__root = _Link()       # sentinel node for the doubly linked list
-            self.clear()
+            self.__root = root = _Link()    # sentinel node for the doubly linked list
+            root.prev = root.next = root
+            self.__map = {}
         self.update(*args, **kwds)
 
     def clear(self):
         root = self.__root
         root.prev = root.next = root
-        self.__map = {}
+        self.__map.clear()
         dict.clear(self)
 
     def __setitem__(self, key, value):