□ dictionary
key(domain list)とvalue(range list)の対応をあわらしたもの
・QforMortals/dictionaries
q) dict: ()!() / 空で作成 q) dict[`a]:1 / 値を追加 q) dict[`b]:2.0 / intとfloatで型が違うのでエラー 'type q) dict a| 1 q) type value dict 7h q) type key dict 11h q) dict: ()!() / 空で作成 q) dict[`]: :: / generic nullを最初に入れると型が不定になる q) dict[`a]: 1; q) dict[`b]: 2.0; q) dict | :: a| 1 b| 2f q) type value dict 0h q) dict@`b / @でもアクセスできる 2f q) dict.a / 不定型にすると"."でアクセスできるようになるっぽい q) dict.c:`C / 値の追加もできる q) dict | :: a| 1 b| 2f c| C q) dict: dict _` / `を削除したい場合 q) dict _`a / これは消えて見えるだけ b| 2f c| `C q) dict2.a:1 / 何も無いところから定義するとこちらの形になる q) dict2 | :: a| 1 q)dict3[`a]: 1 / dictionaryがないとダメ 'type ※「::」は generic null をあらわす非常にわかりにくい記号...
□ dictionaryとtable
dictionaryはテーブルに変換することができる
dictionaryの作り方によって変換方法は主に2種類ある
※前提: dictionaryのkeyがsymbolのリストであること
(A) valueがatomである(もしくはatomとして扱いたい何か)
⇒ enlist
(B) valueがconformableなリストである(atomか同じ長さのリスト)
⇒ flip
q) .Q.w[] / valueがatomのリスト used| 120288 heap| 67108864 peak| 67108864 wmax| 0 mmap| 0 mphy| 16640253952 syms| 591 symw| 19098 q) flip .Q.w[] / flipはダメ 'rank q) enlist .Q.w[] used heap peak wmax mmap mphy syms symw --------------------------------------------------------- 120336 67108864 67108864 0 0 16640253952 591 19098 q) dict: `a`b`c!(1 2;3 4;5 6) q) dict a| 1 2 b| 3 4 c| 5 6 q) flip dict / valueがリストのときはflipで a b c ----- 1 3 5 2 4 6 q) enlist dict a b c / enlistだと違う形のテーブルになる ----------- 1 2 3 4 5 6
0 件のコメント:
コメントを投稿