在KDB中如何按照字典的键对字典进行排序?
KDB字典按键排序解决方案
问题复现
你给出的示例字典定义如下:
d: 1 -2 -1 ! 3 4 5
直接使用asc d默认按字典的值排序,无法满足按键排序的需求。
实现方法
最简写法(推荐)
先提取字典的键做排序,再用排序后的键重排原字典即可:
/ 按键升序排序 sorted_d: (asc key d) # d
代码逻辑说明:
key d:提取目标字典的所有键asc key d:对键列表执行升序排序,如需降序可替换为desc key d#:KDB取子字典操作符,左侧传入排序后的键列表,右侧传入原字典,会严格按照左侧键的顺序返回新字典
运行结果
针对你的示例字典,排序后输出结果如下:
-2| 4 -1| 5 1 | 3
扩展说明
如果需要自定义键的排序规则,可以先对key d返回的键列表做自定义排序处理,再通过#操作符重排字典即可,无需使用其他复杂函数。
内容的提问来源于stack exchange,提问作者cjm2671
相关产品推荐
相关产品推荐

