KDB+/Q中?仅返回首个匹配,如何查找字典所有匹配值条目
KDB+/Q 字典全匹配条目检索方法
原生?函数仅返回字典中目标值的首个匹配键,要拿到所有匹配的键,核心是拆解字典的键、值结构,通过逐值比对生成过滤条件实现全量匹配。
操作步骤
- 用
value函数提取字典的全部值,和目标匹配值做逐元素相等判断,生成布尔类型的过滤掩码 - 用
where配合掩码,对字典的全部键做过滤,得到所有对应匹配值的键
实操示例
沿用示例中定义的字典:d:1 2 3 4!100 200 100 400,需要找出所有值为100的键时,输入以下代码:
// 逐值比对生成匹配掩码 mask: value[d] = 100 // 过滤得到所有匹配键 key[d] where mask
执行后返回结果为1 3,覆盖字典中两个值为100的键条目。
如果不需要保留中间掩码变量,也可以将逻辑合并为单行写法,直接输出结果:
key[d] where value[d] = 100
内容的提问来源于stack exchange,提问作者user3203476
相关产品推荐
相关产品推荐

