为 q lang (kdb+) 更新字典中的值
Update value in dictionary for q lang (kdb+)
如何使用函数式方式更新 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];
也可以使用标准 amend/set 语法(使用“:”)在功能上更新字典,如下所示:
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
这里没有真正需要函数式应用来更改字典中的值。
如何使用函数式方式更新 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];
也可以使用标准 amend/set 语法(使用“:”)在功能上更新字典,如下所示:
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
这里没有真正需要函数式应用来更改字典中的值。