我想投射字典并记录它。
dict:(enlist`code)!(enlist`B10005)
当我做的时候
type value dict / 11h
但关键看起来像代码
当我做的时候
type string value dict / 0h
我不确定为什么。
我想与字符串连接并记录它。所以它会是这样的:
"The constraint is ",string key dict
但它没有用。约束将类似于每一行的每个字母。如何构建字典以便我可以连接并记录它。
答案 0 :(得分:4)
查看http://code.kx.com/q/ref/dotq/#qs-plain-text以记录任意kdb +数据类型。
q)show dict:`key1`key2!`value1`value2
key1| value1
key2| value2
q).Q.s dict
"key1| value1\nkey2| value2\n"
答案 1 :(得分:1)
这里有几件事情。
dict
只有一个键/值对,但这一事实不会影响key
和value
的行为方式:它们返回所有键和价值观。这就是type value dict
11h
为 符号列表的原因。出于完全相同的原因,key dict
为,`code
,其中逗号表示enlist
:key dict
列表符号(在您的特定示例中) )碰巧只有一个符号`code
。
string
应用于符号列表会将该列表的每个元素转换为字符串并返回 字符串列表
q中的字符串是一个简单的字符列表(有关简单和混合列表的更多信息,请参阅http://code.kx.com/wiki/Tutorials/Lists)
当您使用字符串列表加入一个简单的字符列表"The constraint is "
时,即一个字符列表列表,结果不能再表示为简单列表,而是成为通用列表。这就是为什么q在加入之前将"The constraint is "
(简单列表)转换为(“T”;“h”;“e”,...)(通用列表),并且您开始在单独的行上显示每个字符。
我希望你现在明白发生了什么。根据您的需要,您可以像这样修改代码:
"The constraint is ",first string key dict / displays the first key
"The constraint is ",", "sv string key dict / displays all keys separated by commas
希望这有帮助。
答案 2 :(得分:1)
如果你正在寻找一些好的日志记录,那么这样的东西可以帮助你(并且是通用的) 迭代值,并转换为字符串
s:{$[all 10h=type each x;","sv x;0h~t:type x;.z.s each x;10h~t;x;"," sv $[t<0;enlist@;(::)]string x]}/
字符串操作
fs:{((,)string[count x]," keys were passed")," " sv/:("Key:";"and the values for it were:"),'/:flip (string key@;value)@\:s each x}
实施例
d:((,)`a)!(,)`a
d2:`a`b!("he";"lo")
d3:`a`b!((10 20);("he";"sss";"ssss"))
结果和执行
fs each (d;d2;d3)
您可以明确地根据您的确切需求进行定制 - 这不是针对复杂的dict值进行测试的