добавить элемент в список словарей, kdb - PullRequest
0 голосов
/ 19 марта 2020

У меня есть словарь

q).test.dict:(`test1;`test2)!(1i;2i)
q).test.dict
test1| 1
test2| 2

, и мне нужно добавить элемент в один из списков словарей, чтобы получить следующий результат:

q).test.dict
test1| 1
test2| 2 4i

Однако у меня возникают проблемы с назначением в этот список словаря.

Я пробовал следующее:

q).test.dict[`test2]:.test.dict[`test2],4i
'type
  [0]  .test.dict[`test2]:.test.dict[`test2],4i

И пробовал другие методы присваивания, которые также приводят к ошибке типа.

Я чувствую, что Я здесь упускаю что-то тихое, очевидное, но, кажется, не могу указать на это.

Ответы [ 2 ]

1 голос
/ 19 марта 2020

Если вы вместо этого определите свой словарь следующим образом

.test.dict:(`test1;`test2)!(enlist 1i;enlist 2i)

Это будет работать. Проблема в том, что значение вашего словаря - это список целых чисел, а не список целых чисел.

1 голос
/ 19 марта 2020

Проблема в том, что вы инициировали / определили словарь, чтобы он имел одинаковое значение (целочисленные атомы), и поэтому kdb ожидает / заставляет значения оставаться целочисленными атомами. Вы можете избежать этого, создав запись по умолчанию (например, generi c null ::), чтобы значение было смешанным списком. Тогда вы можете добавить

.test.dict:(`;`test1;`test2)!(::;1i;2i)
...