'@ 1'和'@ 2'之间有什么关系?

时间:2010-01-07 07:38:30

标签: python django

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'列表。

感谢

2 个答案:

答案 0 :(得分:3)

SortedDict是“一个字典,它按照插入顺序保存其键。” (见:documentation)。

您的@ 1行正在将键值对存储在字典中。 @ 2将密钥存储在内部列表中以维护订单。

答案 1 :(得分:2)

因为这是 Sorted dict。字典通常是未排序的,因此该实现添加了一个keyOrder来记录项目的添加顺序。