Python3.8中如何基于SortedDict创建自动升/降序排序的字典?
实现自动排序的字典结构(升序/降序)
基于sortedcontainers.SortedDict的解决方案
1. 升序排序字典
SortedDict默认会按键的自然顺序升序维护,直接实例化使用即可:
from sortedcontainers import SortedDict # 初始化升序字典 dic1 = SortedDict({1:'a', 2:'b', 3:'c', 5:'e'}) # 插入新元素 dic1[4] = 'd' # 验证结果 print(dic1 == SortedDict({1:'a', 2:'b', 3:'c', 4:'d', 5:'e'})) # 输出 True
2. 降序排序字典
SortedDict支持通过key参数自定义排序逻辑,我们可以传入一个反转键排序权重的函数,实现降序效果:
from sortedcontainers import SortedDict # 定义反转排序的键函数,适配数字和字符串类型 def reverse_sort_key(key): if isinstance(key, (int, float)): return -key # 针对字符串的降序处理,可根据实际键类型调整 elif isinstance(key, str): return key[::-1] return key # 初始化降序字典 dic2 = SortedDict({5:'e', 3:'c', 2:'b', 1:'a'}, key=reverse_sort_key) # 插入新元素 dic2[4] = 'd' # 验证结果 print(dic2 == SortedDict({5:'e', 4:'d', 3:'c', 2:'b', 1:'a'}, key=reverse_sort_key)) # 输出 True
核心说明
SortedDict会在每次插入、删除元素时,自动根据key函数的返回值维护排序状态,无需手动调用排序方法- 自定义
key函数可以灵活适配不同类型的键,只需确保函数返回值的排序顺序符合需求即可 - 该方案完全继承了字典的所有属性,支持字典的常规操作(如取值、遍历、删除等)
内容的提问来源于stack exchange,提问作者apt45
相关产品推荐
相关产品推荐

