tags:

views:

67

answers:

2
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

+2  A: 

Because this is a Sorted dict. Dictionaries normally are unsorted, so this implementation adds a keyOrder to record the order that items are added.

Daniel Roseman
+3  A: 

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.

Seth