在KDB中添加2个字典时获取类型错误

在KDB中添加2个字典时获取类型错误,kdb,Kdb,我可以将第二个字典(si)添加到带有(dt) 但是,另一种方法不起作用,我得到类型错误: d2:`s`i!`VOD`L d2,:`d`t!(.z.d ;.z.t) d2 在第一种情况下,(dt)正在制作一个异构字典: q)d1:`d`t!(.z.d ;.z.t) q)type value d1 0h 现在,如果您添加并分配任何同质或异质字典,它将起作用 而在另一种情况下,创建的第一个字典是同构的,当您添加并分配同构字典(或其他类型的同构字典)时,它会抛出错误 要解决此问题,您应该只添加字典,

我可以将第二个字典
(si)
添加到带有
(dt)

但是,另一种方法不起作用,我得到类型错误:

d2:`s`i!`VOD`L
d2,:`d`t!(.z.d ;.z.t)
d2
在第一种情况下,
(dt)
正在制作一个异构字典:

q)d1:`d`t!(.z.d ;.z.t)
q)type value d1
0h
现在,如果您添加并分配任何同质或异质字典,它将起作用

而在另一种情况下,创建的第一个字典是同构的,当您添加并分配同构字典(或其他类型的同构字典)时,它会抛出错误

要解决此问题,您应该只添加字典,然后分配它

q)d2:`s`i!`VOD`L
q)d2:d2, `d`t!(.z.d ;.z.t)
q)d2
s| `VOD
i| `L
d| 2018.03.25
t| 09:59:17.109
在第一种情况下,
(dt)
正在制作一个异构字典:

q)d1:`d`t!(.z.d ;.z.t)
q)type value d1
0h
现在,如果您添加并分配任何同质或异质字典,它将起作用

而在另一种情况下,创建的第一个字典是同构的,当您添加并分配同构字典(或其他类型的同构字典)时,它会抛出错误

要解决此问题,您应该只添加字典,然后分配它

q)d2:`s`i!`VOD`L
q)d2:d2, `d`t!(.z.d ;.z.t)
q)d2
s| `VOD
i| `L
d| 2018.03.25
t| 09:59:17.109

创建dictionary
d2
时,符号所在的所有值。当您尝试使用非符号类型使用
d2:
更新此代码时,会导致kdb由于类型不匹配而引发错误。防止这种情况的一种方法是向字典中添加一个空键,以确保可以为值添加混合类型:

q)d2:enlist[`]!enlist(::)    / add null key
q)d2,:`s`i!`VOD`L
q)d2
 | ::
s| `VOD
i| `L
q)d2,:`d`t!(.z.d ;.z.t)
q)d2
 | ::
s| `VOD
i| `L
d| 2018.03.25
t| 09:42:52.754

如果您调查一个名称空间,例如
.q
或创建自己的名称空间,您将看到空键存在,确保名称空间可以包含混合类型。

当创建dictionary
d2
时,所有符号所在的值都存在。当您尝试使用非符号类型使用
d2:
更新此代码时,会导致kdb由于类型不匹配而引发错误。防止这种情况的一种方法是向字典中添加一个空键,以确保可以为值添加混合类型:

q)d2:enlist[`]!enlist(::)    / add null key
q)d2,:`s`i!`VOD`L
q)d2
 | ::
s| `VOD
i| `L
q)d2,:`d`t!(.z.d ;.z.t)
q)d2
 | ::
s| `VOD
i| `L
d| 2018.03.25
t| 09:42:52.754
如果您调查一个名称空间,例如
.q
或创建自己的名称空间,您将看到null键存在,从而确保名称空间可以包含混合类型