要将一个元素 upsert 到字典中,我做
q) d[`x]:12345
这修改了现有字典,操作成本接近
O(1)
或 O(log N)
取决于底层实现(哈希表或树)(实际上我不知道)。但是,要删除 key ,我必须使用:
q) d:(enlist `x) _ d
至少是
O(N)
因为它复制了完整的字典而不删除 O(N)
中的项目然后分配给 d
在 O(1)
因为指针。这看起来像删除操作歧视!也许就地删除记录不全但存在于某处?
最佳答案
另外两个选项包括 apply :
.[`d;();_;`x]
functional delete
![`d;();0b;enlist`x]
如果您想删除 ,最后一个表格很有用多个键 一气呵成。例如。,
![`d;();0b;`x`y]
关于dictionary - KDB:从字典中就地删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46865622/