在dolphindb中如何对一个字典按照value进行过滤筛选?

对下面这样的一个dict(INT,INT),能不能不用for循环选出value>3的key:value?

id = 101..110   
value = rand(5, 10)
z=dict(id, value)

image

另外,只有这么两列数,用dict操作和用table操作,在性能上差别大不大?

请先 登录 后评论

2 个回答

Jax Wu

回答一下第二个问题,类似上面的操作,使用table的性能会更好。示例代码如下:

t = table(101..110 as id, rand(5, 10) as value)
t[t.value > 3]
请先 登录 后评论
谭华

解决方案:

将kv键值对转换为两列的table,再进行where条件过滤。

n=1000000
id = 1..n  
value = rand(100, n)
z=dict(id, value)
t=table(z.keys() as key,z.values() as value)
t[t.value > 80]


对于只有两列的数据,如果是通过value找key,dict暂无比较好的实现方案;

如果是通过key找value,我们做了如下性能测试,可以看出使用table的方案性能是优于使用dict方案的。

timer(10) a = t[t.key > 80]
timer(10) c= z[z.keys()>80]


性能对比:

实现方案            耗时

    表              30.367 ms

   字典            77.585 ms

请先 登录 后评论