KDB:将函数应用于字典中的所有值

时间:2018-12-04 04:05:30

标签: string function dictionary kdb

我有一本字典,具有与不同键对应的不同前缀。我想将字符串追加和预先添加到字典中的每个值。

例如:

filePrefixes: `QCentral`QWest`QEast!("GLO_CCEUML_CSFBSL_";"GLO_CCALML_CSFBSL_";"GLO_CCAPML_CSFBSL_")

我想预先添加folderPath并附加dateFormat和文件扩展名“ .csv”。

因此字典应如下所示:

filePrefixes: `QCentral`QWest`QEast!("..\..\code\products\Q\ShortLocator2\Request Files\1\GLO_CCEUML_CSFBSL_20181203_1948.csv";"..\..\code\products\Q\ShortLocator2\Request Files\1\GLO_CCALML_CSFBSL_20181203_1948.csv";"..\..\code\products\Q\ShortLocator2\Request Files\1\GLO_CCAPML_CSFBSL_20181203_1948.csv")

我做了这样的事情。不知道是否有更好的方法可以做到这一点:

  filename: (value filePrefixes),\:(dateFormat,".csv");
  filePaths: string[folderPath],/:(filename);
  filePrefixes:(key filePrefixes)!(filePaths);

1 个答案:

答案 0 :(得分:3)

如果有帮助,可以直接在字典中修改值。根据您的示例代码对dateFormatfolderPath进行一些假设:

dateFormat:"20181203_1948";
folderPath:"..\\..\\code\\products\\Q\\ShortLocator2\\Request Files\\1\\"

这可以与上面提供的步骤结合使用,而无需提取值:

q)show filePrefixes:folderPath,/:filePrefixes,\:dateFormat,".csv"
QCentral| "..\\..\\code\\products\\Q\\ShortLocator2\\Request Files\\1\\GLO_CCEUML_CSFBSL_20181203_1948.csv"
QWest   | "..\\..\\code\\products\\Q\\ShortLocator2\\Request Files\\1\\GLO_CCALML_CSFBSL_20181203_1948.csv"
QEast   | "..\\..\\code\\products\\Q\\ShortLocator2\\Request Files\\1\\GLO_CCAPML_CSFBSL_20181203_1948.csv"

从本质上讲,这些值就像一个列表,但有些限制在Q凡人的dictionaries部分中简要讨论。