hi, how can I swap key and list of values using q? Thanks!
python version: https://stackoverflow.com/questions/51740270/python-dictionary-swap-keyvalue-pair-when-values-exist-in-mutiple-keys
for example:
1 2 3!(4 5 3;6 7 3;4 1)
becomes
1 3 4 5 6 7!(enlist 3;1 2;1 3;enlist 1;enlist 2;enlist 2)
This achieves what you’re looking for.
q)d:1 2 3!(4 5 3;6 7 3;4 1) q)r:1 3 4 5 6 7!(enlist 3;1 2;1 3;enlist 1;enlist 2;enlist 2) q){a!keywhere each flip value(a:asc distinct raze x)in/:x} d 1| ,3 3| 1 2 4| 1 3 5| ,1 6| ,2 7| ,2 q)r~{a!keywhere each flip value(a:asc distinct raze x)in/:x}d 1b
Another method:
q){a!x a:asc key x:group(!). flip raze key,''value x}d 1| ,3 3| 1 2 4| 1 3 5| ,1 6| ,2 7| ,2
Rolf1
4
{key[i]!geti:iasc key x:group(!). flip raze key,''get x}
indexing into the keys instead of doing a lookup a smidge faster