Issue #6149: Fix initialization of WeakValueDictionary objects from non-empty parameters.
diff --git a/Lib/test/test_weakref.py b/Lib/test/test_weakref.py
index 9821e1b..049dba2 100644
--- a/Lib/test/test_weakref.py
+++ b/Lib/test/test_weakref.py
@@ -942,6 +942,17 @@
             dict[o] = o.arg
         return dict, objects
 
+    def test_make_weak_valued_dict_from_dict(self):
+        o = Object(3)
+        dict = weakref.WeakValueDictionary({364:o})
+        self.assertEqual(dict[364], o)
+
+    def test_make_weak_valued_dict_from_weak_valued_dict(self):
+        o = Object(3)
+        dict = weakref.WeakValueDictionary({364:o})
+        dict2 = weakref.WeakValueDictionary(dict)
+        self.assertEqual(dict[364], o)
+
     def make_weak_valued_dict(self):
         dict = weakref.WeakValueDictionary()
         objects = list(map(Object, range(self.COUNT)))
diff --git a/Lib/weakref.py b/Lib/weakref.py
index 0276dfd..5e6cc8b 100644
--- a/Lib/weakref.py
+++ b/Lib/weakref.py
@@ -49,7 +49,7 @@
                 del self.data[wr.key]
         self._remove = remove
         self.data = d = {}
-        d.update(*args, **kw)
+        self.update(*args, **kw)
 
     def __getitem__(self, key):
         o = self.data[key]()