<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:

def set_priors(self, priors=None, fixed=None, random=None,
                   match_derived_names=True):
        '''Set priors for one or more existing terms.

        Args:
            priors (dict): Dict of priors to update. Keys are names of terms
                to update; values are the new priors (either a Prior instance,
                or an int or float that scales the default priors). Note that
                a tuple can be passed as the key, in which case the same prior
                will be applied to all terms named in the tuple.
            fixed (Prior, int, float, str): a prior specification to apply to
                all fixed terms currently included in the model.
            random (Prior, int, float, str): a prior specification to apply to
                all random terms currently included in the model.
            match_derived_names (bool): if True, the specified prior(s) will be
                applied not only to terms that match the keyword exactly,
                but to the levels of random effects that were derived from
                the original specification with the passed name. For example,
                `priors={'condition|subject':0.5}` would apply the prior
                to the terms with names '1|subject', 'condition[T.1]|subject',
                and so on. If False, an exact match is required for the
                prior to be applied.
        '''
        # save arguments to pass to _set_priors() at build time
        kwargs = dict(zip(
            ['priors', 'fixed', 'random', 'match_derived_names'],
            [priors, fixed, random, match_derived_names]))
        self._added_priors.update(kwargs)

        self.built = False