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

KDB: apply function to all values in a dictionary

我有一个字典,不同的前缀对应不同的键。我想向字典中的每个值附加和预添加字符串。

例如:

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\GLO_CCEUML_CSFBSL_20181203_1948.csv";"..\..\code\products\Q\ShortLocator2\Request Files\GLO_CCALML_CSFBSL_20181203_1948.csv";"..\..\code\products\Q\ShortLocator2\Request Files\GLO_CCAPML_CSFBSL_20181203_1948.csv")

我做了这样的事情。不确定是否有更好的方法:

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

如果有帮助,可以直接在字典中修改这些值。根据您的示例代码对 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 for mortals 的 dictionaries 部分简要讨论。