You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从键控表(keyed table)生成嵌套字典(nested dict)?

将kdb+键控表转换为嵌套字典

实现思路

要把键控表转成支持可变键数的嵌套字典,核心是从右往左逐层嵌套键列与对应的值:先把最右侧的键列和值列生成基础字典,再依次将左侧的键列与上一层的字典嵌套,最终形成多层级的嵌套结构。

代码实现

首先构造示例键控表:

t:([k1:20?`a`b`c;k2:20?`x`y`z;k3:20?1000];v:20?`A`B`C)

编写通用转换函数,支持任意数量的键列:

tableToNestedDict:{[t]
    keysTab: first t;  // 提取键控表的键部分
    valCol: last t;    // 提取值列
    // 从右往左逐层嵌套,构建多级字典
    foldr[{[kCol;d] flip (kCol;d)}] valCol flip keysTab
}

测试使用

生成嵌套字典后,即可通过键组合直接取值:

d:tableToNestedDict[t]
d[`c;`y;886]  // 返回对应的值(如示例中的`A`)

关键逻辑说明

  • flip keysTab将键表转置,让每一行的键组合(如(c;y;886))与对应值配对;
  • foldr是kdb+的右折叠函数,从最右侧的键开始,逐层将键列与下一层的字典绑定,最终形成嵌套结构;
  • 若键控表存在重复键组合,转换后的字典会保留最后一次出现的键值对,与kdb+键控表的行为一致。

内容的提问来源于stack exchange,提问作者chrise

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 03:13:15