'Return the cycle structure of the permutation as a dictionary
indicating the multiplicity of each cycle length.
Examples
>>> from sympy.combinatorics import Permutation
>>> Permutation.print_cyclic = True
>>> Permutation(3).cycle_structure
{1: 4}
>>> Permutation(0, 4, 3)(1, 2)(5, 6).cycle_structure
{2: 2, 3: 1}'

@property
def cycle_structure(self):

    if self._cycle_structure:
        rv = self._cycle_structure
    else:
        rv = defaultdict(int)
        singletons = self.size
        for c in self.cyclic_form:
            rv[len(c)] += 1
            singletons -= len(c)
        if singletons:
            rv[1] = singletons
        self._cycle_structure = rv
    return dict(rv)
