dictionary - KDB:从字典中就地删除

标签 dictionary kdb

要将一个元素 upsert 到字典中,我做

q) d[`x]:12345

这修改了现有字典,操作成本接近O(1)O(log N)取决于底层实现(哈希表或树)(实际上我不知道)。

但是,要删除 key ,我必须使用:
q) d:(enlist `x) _ d

至少是 O(N)因为它复制了完整的字典而不删除 O(N) 中的项目然后分配给 dO(1)因为指针。

这看起来像删除操作歧视!也许就地删除记录不全但存在于某处?

最佳答案

另外两个选项包括 apply :

.[`d;();_;`x]

functional delete
![`d;();0b;enlist`x]

如果您想删除 ,最后一个表格很有用多个键 一气呵成。例如。,
![`d;();0b;`x`y]

关于dictionary - KDB:从字典中就地删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46865622/

相关文章:

python - 如何在python中将一个字典结构转换为另一个字典

Python字典: Return First Value in List Or String

kdb - 如何对 KDB 中加载的展开表执行?

kdb - 如何从 KDB 的列表中删除元素?

.net - 在 .NET 中实现 Trie 的明智方法是什么?

java - 如何将 Navigablemap 转换为 String[][]

python - KDB+/q :What is a canonical implementation of a remote query?

c++ - 错误 LNK2019 : unresolved external symbol khpu referenced in function "private: void __cdecl

kdb - qStudio 多行执行

python - 如何添加列表作为Python字典中的值