class SortedDict(dict):
def __new__(cls, *args, **kwargs):
instance = super(SortedDict, cls).__new__(cls, *args, **kwargs)
instance.keyOrder = []
return instance
def __setitem__(self, key, value):
super(SortedDict, self).__setitem__(key, value)#@1
if key not in self.keyOrder:#@2
self.keyOrder.append(key)
为什么要制作@ 2,为什么要制作一个'keyOrder'列表。
感谢
答案 0 :(得分:3)
SortedDict是“一个字典,它按照插入顺序保存其键。” (见:documentation)。
您的@ 1行正在将键值对存储在字典中。 @ 2将密钥存储在内部列表中以维护订单。
答案 1 :(得分:2)
因为这是 Sorted dict。字典通常是未排序的,因此该实现添加了一个keyOrder来记录项目的添加顺序。