如何在 KDB 中使用 upsert 创建嵌套字典?

How do I create nested dictionaries with upsert in KDB?

为什么 d[c] 作业在这里不起作用?

d: `a`b!(1;2)
d
a| 1
b| 2
d[`c]: d
'type
  [0]  d[`c]: d

(PS 它不适用于任何字典,不仅仅是这里显示的递归示例)

您尝试的赋值失败,因为您正试图添加到“类型化”字典(在本例中为 long 类型)。你会遇到同样的错误,试图添加一个 key-value 对,其中一个符号作为值,例如:

q)d[`c]:`s
'type
  [0]  d[`c]:`s

您可以使用没有指定值类型的字典来解决这个问题:

q)d:enlist[`]!enlist(::)
q)d[`a]:12.5
q)d[`b]:d
q)d
 | ::
a| 12.5
b| ``a!(::;12.5)