Ordenar un OrderedDict anidado por clave, de forma recursiva

Decirorig es unOrderedDict que contiene una cadena normal: pares de valores de clave de cadena, pero a veces el valor podría ser otro, anidadoOrderedDict.

Quiero ordenarorig por clave, alfabéticamente (ascendente), y hazlorecursivamente.

Reglas:

Suponga que las cadenas de teclas son impredeciblesSuponga que la anidación puede tener lugar infinitamente, p. todos los niveles 1-50 tienen ambas cadenas, OrderedDicts, etc. como valores.

Necesito ayuda con elsorted algoritmo:

import string
from random import choice


orig = OrderedDict((
    ('a', choice(string.digits)),
    ('b', choice(string.digits)),
    ('c', choice(string.digits)),
    ('special', OrderedDict((
        ('a', choice(string.digits)),
        ('b', choice(string.digits)),
        ('c', choice(string.digits)),
    )))
))

sorted_copy = OrderedDict(sorted(orig.iteritems(), ...))

self.assertEqual(orig, sorted_copy)

Respuestas a la pregunta(3)

Su respuesta a la pregunta