def popvalue(self, k, d=None):
        """
        D.popvalue(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
        """
        if k not in self._col_dict:
            return d
        value = self._col_dict.pop(k)
        self._col_list.remove(value)
        return value
D.popvalue(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