如何实现有序的、默认的DECT?我想把OrderedDict()和defaultdict()从…collections在一个对象中,这将是一个有序的、默认的dict.这个是可能的吗?
3 回答
慕森卡
TA贡献1806条经验 获得超8个赞
在Python2.7.X和3.4.X上进行了测试:
from collections import OrderedDict, defaultdictclass OrderedDefaultDict(OrderedDict, defaultdict): def __init__(self, default_factory=None, *args, **kwargs): #in python3 you can omit the args to super super(OrderedDefaultDict, self).__init__(*args, **kwargs) self.default_factory = default_factory
如果你检查了全班的MRO(又名,help(OrderedDefaultDict)
),你会看到这个:
class OrderedDefaultDict(collections.OrderedDict, collections.defaultdict) | Method resolution order: | OrderedDefaultDict | collections.OrderedDict | collections.defaultdict | __builtin__.dict | __builtin__.object
意味着当OrderedDefaultDict
初始化后,它将服从OrderedDict
但是这个人反过来会调用defaultdict
调用前的方法__builtin__.dict
这正是我们想要的。
添加回答
举报
0/150
提交
取消