dictionary - KDB+如何更新嵌套字典?

标签 dictionary kdb

我有一本名为 books 的字典。

q)type books
99h
q)key books
`ETH-USD-BIDS`ETH-USD-ASKS`BTC-USD-BIDS`BTC-USD-ASKS
q)type books[`$"ETH-USD-BIDS"]
99h
q)key books[`$"ETH-USD-BIDS"]
3518.12 3517.97 3517.96 3517.86 3517.85 3517.84 3517.63 3517.58 3517.51 3517.43 3517.26..

我可以成功地索引每本书以找到每个价格水平的数量

q)books[`$"ETH-USD-BIDS"][3518.12]
.035

但是当我尝试用新的交易量更新特定价格水平时,我收到了一个'assign 错误。

q)books[`$"ETH-USD-BIDS"][3518.12]:4f
'assign
  [0]  books[`$"ETH-USD-BIDS"][3518.12]:4f

任何人都可以帮助我了解如何将新数量分配到我的价格水平吗?我有些困惑。谢谢!!

最佳答案

使用 ; 进行深度索引/修改,而​​不是使用多个 []

q)dict:(`a`b`c)!(`d`e`f!til 3;`g`h`i!2*til 3;`j`k`l!1+til 3)
q)dict
a| `d`e`f!0 1 2
b| `g`h`i!0 2 4
c| `j`k`l!1 2 3

q)dict[`a;`d]:20
q)dict
a| `d`e`f!20 1 2
b| `g`h`i!0 2 4
c| `j`k`l!1 2 3

/ q operates right to left so this is evaluating first giving the error
q)[3518.12]:4f
'assign
  [0]  [3518.12]:4f

关于dictionary - KDB+如何更新嵌套字典?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69109366/

相关文章:

dictionary - 传单通过图层选择添加/删除图例

vb.net - 为什么在 VB.NET 中没有出现 Binding Combobox usingdictionary with the MS ACCESS database with dapper

kdb - 如何将用户查询委托(delegate)给 KDB/Q 中的单独线程

c++ - KDB C++ API : creating a list of strings

python - 如何在 python 3.* 中将字符串转换为字典?

python - 两个具有优先级的Python字典的基于键的交集

java - 将 Java 比较器逻辑移出实体?

ubuntu - 在 Ubuntu 中使用 32 位 kdb+ 运行 pyq 时出现 "No such file or directory"错误

date - 在 KDB Q 中将日、月、年创建为整数的日期

kdb - q kdb中sublist和take operator(#)的比较