def setdefault(self, key, default=None):
        if self.session.transaction is not None:
            self.session.mark_query()
            try:
                val = self[key]
            except KeyError:
                self.session.mark_manipulative([self.key])
                self[key] = val = default
            return val
        encoded_key = self.key_type.encode(key)
        encoded_val = self.value_type.encode(default)
        result = [None]
        def block(pipe):
            ok = pipe.hsetnx(self.key, encoded_key, encoded_val)
            if ok:
                result[0] = default
            else:
                value = pipe.hget(self.key, encoded_key)
                result[0] = self.value_type.decode(value)
            pipe.multi()
        self.session.client.transaction(block, self.key)
        return result[0]
Returns cross validated scores (just like cross_val_score), 
dataset/ETHPy150Open dahlia/sider/sider/hash.py/Hash.setdefault--crossover with--dataset/ETHPy150Open neurosynth/neurosynth/neurosynth/analysis/classify.py/Classifier.feat_select_cvs