Actually, forget all that; it's even simpler.
At least in recent 3.x, the only thing wrong with inheriting from both types, assuming you put OrderedDict first, is the __init__ signature. So:
class OrderedDefaultDict(OrderedDict, defaultdict):def __init__(self, default_factory=None, *a, **kw):OrderedDict.__init__(self, *a, **kw)self.default_factory = default_factory