code: def _convert(self, dictlike):
          
          for incoming_key, valuelist in util.dictlike_iteritems(dictlike):
              for value in valuelist:
                  new_key = self.keyfunc(value)
                  if incoming_key != new_key:
                      raise TypeError(
                          "Found incompatible key %r for value %r; this "
                          "collection's "
                          "keying function requires a key of %r for this value." % (
                              incoming_key, value, new_key))
                  yield value
docs: Validate and convert a dict-like object into values for set()ing.
  
          This is called behind the scenes when a MappedCollection is replaced
          entirely by another collection, as in::
  
            myobj.mappedcollection = {'a':obj1, 'b': obj2} # ...
  
          Raises a TypeError if the key in any (key, value) pair in the dictlike
          object does not match the key that this collection's keyfunc would
          have assigned for that value.