'Delete all values associated with the key.'

def __delitem__(self, key):

    if isinstance(key, slice):
        return list.__delitem__(self, key)
    to_delete = [x for x in self if (x[0] == key)]
    if (not to_delete):
        raise KeyError(key)
    else:
        for k in to_delete:
            self.remove(k)
