我无法从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
谢谢, 尤金
答案 0 :(得分:5)
我认为您应该使用enlist
从字典中删除字符串键:
q)enlist["k1"]_("k1";"k2";"ABC")!("v1";"v2";"BLA BLA")
"k2" | "v2"
"ABC"| "BLA BLA"
_
(drop)将左输入作为字典键元素的列表(当涉及到符号键时除外)。试着想象一下,在你的情况下," k1"是一个原子'要创建单例列表,您可以enlist
" k1"。
答案 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