'Construct a new conditional probability distribution, based on
the given conditional frequency distribution and ``ProbDist``
factory.
:type cfdist: ConditionalFreqDist
:param cfdist: The ``ConditionalFreqDist`` specifying the
frequency distribution for each condition.
:type probdist_factory: class or function
:param probdist_factory: The function or class that maps
a condition\'s frequency distribution to its probability
distribution.  The function is called with the frequency
distribution as its first argument,
``factory_args`` as its remaining arguments, and
``factory_kw_args`` as keyword arguments.
:type factory_args: (any)
:param factory_args: Extra arguments for ``probdist_factory``.
These arguments are usually used to specify extra
properties for the probability distributions of individual
conditions, such as the number of bins they contain.
:type factory_kw_args: (any)
:param factory_kw_args: Extra keyword arguments for ``probdist_factory``.'

def __init__(self, cfdist, probdist_factory, *factory_args, **factory_kw_args):

    self._probdist_factory = probdist_factory
    self._factory_args = factory_args
    self._factory_kw_args = factory_kw_args
    for condition in cfdist:
        self[condition] = probdist_factory(cfdist[condition], *factory_args, **factory_kw_args)
