Kdb 将不同类型的值向上插入到字典

Kdb 将不同类型的值向上插入到字典,kdb,Kdb,这一个有效: d1:`t1`t2`idx!(2017.01.01;2018.01.01;42) 但是这个失败了(类型错误): 有解决办法吗?为了更好的可读性,我想逐个键(逐行)填充字典。实际上,它更长。当您将字典定义为d:()!(),您插入的第一件事(在本例中是日期)将使字典的类型仅采用-14h类型的值 标准做法是使用非类型化的值初始化dict,以防止该值成为简单向量 q)d2:enlist[`]!enlist(::) q)d2[`t1]:2017.01.01 q)d2[`t2]:2018.0

这一个有效:

d1:`t1`t2`idx!(2017.01.01;2018.01.01;42)
但是这个失败了(类型错误):


有解决办法吗?为了更好的可读性,我想逐个键(逐行)填充字典。实际上,它更长。

当您将字典定义为
d:()!()
,您插入的第一件事(在本例中是日期)将使字典的类型仅采用
-14h类型的值

标准做法是使用非类型化的值初始化dict,以防止该值成为简单向量

q)d2:enlist[`]!enlist(::)
q)d2[`t1]:2017.01.01
q)d2[`t2]:2018.01.01
q)d2[`idx]:42
q)d2
   | ::
t1 | 2017.01.01
t2 | 2018.01.01
idx| 42

第一种方法定义了一个通用字典,它的值是一个通用列表,这意味着它可以存储任何类型的值。这也用于定义表,因为表可以存储不同类型的列

在第二种方法中,当您在字典中插入第一个值时,它将字典的值列表类型设置为该元素类型。现在,这是一个简单的列表

  q) d2: ()!()
  q) d2[`t1]:2017.01.01
  q) type value d2  / 14h
这意味着现在字典值不能是常规列表,只能在其中存储日期类型的项

要创建常规字典(将常规列表存储为值),请将第一个条目值插入为null(::)。这就是名称空间字典所使用的内容

  q)  d2: ()!()
  q)  d2[`]:(::) 
现在它可以存储任何值

  q) d2[`t2]:2018.01.01
  q) d2[`idx]:42

或者,您可以连接这两个词典,而不是添加条目。当您需要向现有词典中添加某些内容时,这很方便。不完全是老年退休金方案,但它符合标题,因此其他登陆这里的人可能会发现它很有用

d2:()!()
d2[`t1]:2017.01.01
d2[`t2]:2018.01.01
d2:d2,(enlist `idx)!(enlist 42)
d2

t1 | 2017.01.01
t2 | 2018.01.01
idx| 42
d2:()!()
d2[`t1]:2017.01.01
d2[`t2]:2018.01.01
d2:d2,(enlist `idx)!(enlist 42)
d2

t1 | 2017.01.01
t2 | 2018.01.01
idx| 42