Какова связь между «@ 1» и «@ 2» - PullRequest
0 голосов
/ 07 января 2010
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 ]

3 голосов
/ 07 января 2010

SortedDict - это «словарь, который хранит свои ключи в том порядке, в котором они вставлены». (См .: документация ).

Ваша строка @ 1 хранит пару ключ-значение в словаре. @ 2 хранит ключ во внутреннем списке для поддержания порядка.

2 голосов
/ 07 января 2010

Потому что это Sorted dict. Словари обычно не сортируются, поэтому эта реализация добавляет keyOrder для записи порядка добавления элементов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...