假设父向量p
被定义为列表,其中每个元素都是指向同一向量中给定项的父项的位置索引的指针。
然后可以找到每个父母的孩子:
q) c:group p:0N 0 1 0 2
| ,0
0| 1 3
1| ,2
2| ,4
如果给出了c
,将子字典c
展平到父向量p
的有效方法是什么?
显然ungroup
不能直接在字典上运行:
q) ungroup c
'type
但是我们可以取消表的分组:
q) {@[;`k] `v xasc ungroup ([]k:key x;v:value x)} c
0N 0 1 0 2
有没有更有效的解决方案,如何在给定p
的情况下获得c
?
答案 0 :(得分:2)
对于要查找的取消分组类型,没有本地q命令。 以下功能可能是一个有用的选项:
invgroup:{key[x]@[raze x;value x;:;til count x]}
有效地执行此操作,将组字典的值作为单个列表返回(斜线x),在每个关联索引集(值x)处对该列表进行索引,并从原始列表中为其分配正确的索引。 然后我们使用这些索引来索引原始列表(键x)的不同值以拉出原始列表
p ~ invgroup group p:0N 0 1 0 2
1b
答案 1 :(得分:1)
Simple solution is:
q) @[raze c;value c;:;key c]
q) 0N 0 1 0 2