#dictionary #kdb
Вопрос:
У меня есть словарь словарей, которые называются книгами.
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
Может ли кто-нибудь помочь мне понять, как назначать новые объемы моим уровням цен? Я несколько озадачен. Спасибо!!
Ответ №1:
Используйте ;
для индексирования/изменения на глубину, а не на несколько []
.
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
Комментарии:
1. Это прекрасная вещь! Большое спасибо, Мэтт!