如何获取字典一组键值的最后一个元素

在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)组成,请问有没有简单的实现方法?

请先 登录 后评论

2 个回答

logger

试试下面的函数,其中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 )
请先 登录 后评论
Peter
// 方案一:使用 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)
请先 登录 后评论