Есть ли способ сортировки элементов в sortedcontainers.SortedDict
по значению, чтобы SortedDict всегда поддерживал свои элементы в отсортированном порядке, основываясь на значениях, а не на ключах?
Стандартный пример из sortedcontainers показывает, что элементы в SortedDict будут автоматически сортироваться по ключу словаря:
>>> from sortedcontainers import SortedDict
>>> sd = SortedDict({'c': 3, 'a': 1, 'b': 2})
>>> sd
SortedDict({'a': 1, 'b': 2, 'c': 3})
До сих пор мне удавалось сортировать элементы в dict по значению (datetime) во время создания:
>>> import datetime
>>> from sortedcontainers import SortedDict
>>> d = {'a': {'datetime': datetime.datetime.now()}, 'b': {'datetime': datetime.datetime.now()}, 'z': {'datetime': datetime.datetime.now()}, 'c': {'datetime': datetime.datetime.now()}}
>>> sd = SortedDict(lambda key: d[key]['datetime'], d)
>>> sd
SortedDict(<function <lambda> at 0x101e86598>, {'a': {'datetime': datetime.datetime('...')}, 'b': {'datetime': datetime.datetime('...')}, 'z': {'datetime': datetime.datetime('...')}, 'e': {'datetime': datetime.datetime('...')}})
Однако, когда я пытаюсь добавить новый элемент, выдается исключение ключевой ошибки:
>>> sd['d'] = {'datetime': datetime.datetime.now()}
>>> KeyError: 'd'