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

kdb/q中如何保存字典?求字典转表方法

KDB/Q 99h类型字典的保存与转表方案

直接保存字典的方法

二进制序列化保存(kdb/q专属格式,读写高效)

用set命令直接保存为二进制文件,后续可通过get读取:

`:out.bin set output
// 读取时用:get `:out.bin

保存为可读文本(如CSV格式)

set不支持直接生成CSV,需先将字典转换为键值对结构,再用0:写入:

// 将字典转为键值对表后写入CSV
0:`:out.csv ("S";",") 0!flip (key output; value output)

解释:flip (key output; value output)把字典转为包含key和value两列的表,0!将表转为列表格式适配0:写入,("S";",")指定存储格式为字符串、分隔符为逗号。

字典转表方案

根据字典值的长度情况,分两种转表方式:

场景1:所有值长度一致(转标准宽表)

直接用flip命令转换,转换后可直接用save保存为CSV:

t:flip output
save `:output.csv  // 转表后即可使用save命令

示例:若字典为output:abc!10 20 30,flip后得到表a b c`,每行对应一组值(此处为单行)。

场景2:值长度不一致(转键值对长表)

如果字典的值是长度不同的列表,比如output:xy!1 2 3;4 5,可转成键值对结构的表:

// 保留原始值的列表形式
t:([] key:key output; value:value output)

// 或展开为单行单值的键值对表
t:raze {[k;v] ([] key:enlist[k]#count v; value:v)} each output

转换后的表同样支持save :output.csv`命令保存。

注::out.csv set output报错的原因是set默认用于kdb二进制对象的存储,无法直接生成CSV格式文件,需先转换结构再保存。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 06:54:55