zjm1126
zjm1126

Reputation: 66777

What is the relationship between '@1' and '@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

Upvotes: 0

Views: 101

Answers (2)

Seth
Seth

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

Daniel Roseman
Daniel Roseman

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

Related Questions