2010-01-07 217 views
0
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'列表。'@ 1'和'@ 2'之間有什麼關係

感謝

回答

3

SortedDict是「一個字典,它保持它們的鍵的插入順序。」 (見:documentation)。

您的@ 1行將鍵值對存儲在字典中。 @ 2將密鑰存儲在內部列表中以維護訂單。

2

因爲這是一個排序字典。字典通常是未排序的,所以此實現添加keyOrder來記錄項目添加的順序。

相關問題