'D.pop(k[,d]) -> v, remove specified key and return the corresponding value.
If key is not found, d is returned if given, otherwise KeyError is raised.'

def pop(self, key, default=__marker):

    try:
        value = self[key]
    except KeyError:
        if (default is self.__marker):
            raise
        return default
    else:
        del self[key]
        return value
