试试下面的函数,其中x->d[x].tail() 是一个lambda函数。
d=dict(STRING,ANY) d[`600001.SH]=10 11 12 d[`600002.SH]=61 62 63 def mytest(d,codeList){ return each(x->d[x].tail(), codeList) } mytest(d,`600001.SH`600002.SH )
在DolphinDB database中,定义了一个字典,它的值是一个vector,比如下面的字典d:
d=dict(STRING,ANY) d[`600001.SH]=10 11 12 d[`600002.SH]=61 62 63
对于这个dict d,和一个键列表codeList,希望返回一个数组,这个数组是有d[for code in codeList] [-1] (最后一个元素,比如600001.SH的12,600002.SH的63)组成,请问有没有简单的实现方法?
// 方案一:使用 each 函数 def mytest(d,codeList){ return each(x->d[x].tail(), codeList) } mytest(d, codeList) // 方案二:使用 transpose 函数 d.transpose().tail()[codeList]
性能测试
数据量:100,000个键的字典
测试方案:通过 timer 函数统计100次计算的耗时,计算单次平均耗时
测试结果
方案一:9.27ms
方案二:92.78ms
数据构造:
m = rand(100, 3:100000) t = table(m).rename!('SH' + string(600001..700000)) d = transpose(t) codeList = 'SH' + rand(string(600001..700000), 10000)