为q语言更新字典中的值(kdb+;)

为q语言更新字典中的值(kdb+;),kdb,q-lang,Kdb,Q Lang,如何使用函数方式更新q字典中的值? 例如: x: `1`2`3; d: x!x; show[d]; // d -> // 1 | 1 // 2 | 2 // 3 | 3 // TODO change d: show[d]; // d -> // 1 | 11 // 2 | 22 // 3 | 3 您可以通过以下方式更改词典: // @[dictionary name; list of keys; ?; list of values]; @[d; `1`2; :; `11`22

如何使用函数方式更新q字典中的值?

例如:

x: `1`2`3;
d: x!x;
show[d];
// d -> 
// 1 | 1
// 2 | 2
// 3 | 3
// TODO change d: 
show[d];
// d -> 
// 1 | 11
// 2 | 22
// 3 | 3

您可以通过以下方式更改词典:

// @[dictionary name; list of keys; ?; list of values];
@[d; `1`2; :; `11`22];

还可以使用标准修正/设置语法(使用“:”)在功能上更新字典,如下所示:

q)x:1 2 3

q)d:x!x

q)d
1| 1
2| 2
3| 3

q)f:{d[x]:y}
q)f[2;7]

q)d
1| 1
2| 7
3| 3
这也适用于向量,前提是它们具有相同的长度:

q)f[1 2;5 6]
q)d
1| 5
2| 6
3| 3
另一种方式:

q)x:1 2 3;
q)d:x!x;
q)d
  1| 1
  2| 2
  3| 3
q)d,: enlist[2]!enlist[5];
q)d
  1| 1
  2| 5
  3| 3
q)d,: (2 3)!(7 7);
q)d
  1| 1
  2| 7
  3| 7

您可以对要更改的密钥使用简单的修改

q)d[1 2]+:10
q)d
1| 11
2| 12
3| 3
这相当于

d[1 2]:d[1 2]+10

在这里,不需要真正的函数应用程序来更改字典中的值

d[1 2]:11 12