有没有办法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 中的项目进行排序:
>>> 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'