kdb如何从字典中删除字符串键

时间:2014-11-10 00:43:36

标签: kdb

我无法从KDB词典中删除条目。键和值是字符串。

工作

q)l3:`a`b`c!1 2 3
q)`a _l3
b| 2
c| 3

无效

q)l2:("k1";"k2";"ABC")!("v1";"v2";"BLA BLA")
q)"k1" _l2
'type

谢谢, 尤金

2 个答案:

答案 0 :(得分:5)

我认为您应该使用enlist从字典中删除字符串键:

q)enlist["k1"]_("k1";"k2";"ABC")!("v1";"v2";"BLA BLA")
"k2" | "v2"
"ABC"| "BLA BLA"

_(drop)将左输入作为字典键元素的列表(当涉及到符号键时除外)。试着想象一下,在你的情况下," k1"是一个原子'要创建单例列表,您可以enlist" k1"。

参考:http://code.kx.com/q/ref/lists/#_-cut

答案 1 :(得分:3)

由于"键列表的类型"在你的字典中是0h(混合列表或列表列表)

     q) type ("k1";"k2";"ABC")
     q) 0h

并且您的单个键的类型是10h(字符串)

     q)  type "k1"
     q) 10h

这就是为什么匹配,kdb会给你输入错误。
参考:http://code.kx.com/q4m3/5_Dictionaries/

它说:  "删除的左操作数是字典(目标),右操作数是类型与目标匹配的键值。"

您可以使用以下内容删除条目:

      q)   (k@where not (k:key l2) like "k1")#l2

Key Value
k2  v2
ABC BLA BLA