我有一本字典,我正在尝试使用 kdb/q 进行保存。为了保存我的字典,我尝试了与保存表格相同的方法:
save `output.csv
但是,我的输出字典(类型 99h)给了我一个错误:
q))save `output.csv
'output
[4] save `output.csv
^
我认为这是因为该表示法仅适用于表格而不适用于字典。任何人都可以帮助我如何做到这一点,或者如果不可能,我如何将字典更改为表格?
这是我的字典的样子:
输出 -> 输入 99
使用 `:out.csv 设置输出来输出
这应该有效。
save
足够灵活,可以将带键表写入 csv。 https://code.kx.com/q/ref/save/
q)output:([Name:`Tim`Bob`Ant;Time:02:20 01:12 03:30;ID:`9h`8a`2w]Score:100 212 998;Comment:("";"Late";"Over"))
q)type output
99h
q)save`output.csv
`:output.csv
q)read0`:output.csv
"Name,Time,ID,Score,Comment"
"Tim,02:20,9h,100,"
"Bob,01:12,8a,212,Late"
"Ant,03:30,2w,998,Over"
您粘贴的错误消息将表明
output
在您当前的上下文中不存在。您是否可能尝试保存本地表而不是全局表?
q){output2:([Name:`Tim`Bob`Ant;Time:02:20 01:12 03:30;ID:`9h`8a`2w]Score:100 212 998;Comment:("";"Late";"Over"));save`output2.csv}[]
'output2
使用
set
写入二进制文件:
https://code.kx.com/q/ref/get/#set
q)`:file set `a`b!1 2
`:file
q)get `:file
a| 1
b| 2
注意:文件路径必须是
hsym
,即以:
开头的符号
https://code.kx.com/q/ref/hsym/
您的对象是一个键控表,它是一种特殊类型的字典。
https://code.kx.com/q/kb/faq/#keyed-tables
您可以使用
0!
取消表格的密钥
https://code.kx.com/q/ref/enkey/#unkey
q)t:`a`b xkey ([] a:1 2;b:4 5;c:5 6)
q)type t
99h
q)t
a b| c
---| -
1 4| 5
2 5| 6
q)0!t
a b c
-----
1 4 5
2 5 6
q)type 0!t
98h
统一长度列表的字典也可以使用
flip
转换为表格