Reputation: 66777
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)
why make @2,why make a list 'keyOrder'.
thanks
Upvotes: 0
Views: 101
Reputation: 46453
The SortedDict is "A dictionary that keeps its keys in the order in which they're inserted." (See: documentation).
Your @1 line is storing the key-value pair in the dictionary. The @2 stores the key in an internal list to maintain order.
Upvotes: 3
Reputation: 599926
Because this is a Sorted dict. Dictionaries normally are unsorted, so this implementation adds a keyOrder to record the order that items are added.
Upvotes: 2