【问题标题】:Update value in dictionary for q lang (kdb+)更新字典中 q lang (kdb+) 的值
【发布时间】:2016-11-15 14:35:39
【问题描述】:

如何使用函数方式更新 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

【问题讨论】:

    标签: kdb q-lang


    【解决方案1】:

    您可以通过这种方式更改您的字典:

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

    【讨论】:

      【解决方案2】:

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

      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
      

      【讨论】:

        【解决方案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
        

        【讨论】:

          【解决方案4】:

          您可以对要更改的密钥进行简单的修改。

          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
          

          这里实际上不需要函数式应用来更改字典中的值。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-03-14
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多