Q 언어-사전

사전은 테이블을 만들기위한 기초를 제공하는 목록의 확장입니다. 수학적 용어로 사전은

"도메인 → 범위"

또는 일반적으로 (짧은) 생성

"키 → 값"

요소 간의 관계.

사전은 해시 테이블과 거의 동일한 키-값 쌍의 정렬 된 모음입니다. 사전은 위치 대응을 통해 도메인 목록과 범위 목록 간의 명시 적 I / O 연관에 의해 정의 된 매핑입니다. 딕셔너리의 생성은 "xkey"프리미티브 (!)를 사용합니다.

ListOfDomain ! ListOfRange

가장 기본적인 사전은 간단한 목록을 간단한 목록에 매핑합니다.

입력 (I) 출력 (O)
`이름 `존
`연령 36
`섹스 "미디엄"
무게 60.3
q)d:`Name`Age`Sex`Weight!(`John;36;"M";60.3)   / Create a dictionary d

q)d

Name   | `John
Age    | 36
Sex    | "M"
Weight | 60.3

q)count d             / To get the number of rows in a dictionary.
4

q)key d               / The function key returns the domain
`Name`Age`Sex`Weight

q)value d             / The function value returns the range.

`John
36

"M"
60.3

q)cols d             / The function cols also returns the domain.
`Name`Age`Sex`Weight

조회

입력 값에 해당하는 사전 출력 값을 찾는 것이 호출됩니다. looking up 입력.

q)d[`Name]       / Accessing the value of domain `Name
`John

q)d[`Name`Sex]   / extended item-wise to a simple list of keys
`John
"M"

동사 @로 조회

q)d1:`one`two`three!9 18 27

q)d1[`two]
18

q)d1@`two
18

사전 작업

수정 및 Upsert

목록과 마찬가지로 사전의 항목은 인덱싱 된 할당을 통해 수정할 수 있습니다.

d:`Name`Age`Sex`Weight! (`John;36;"M";60.3)
                                  / A dictionary d
                                  
q)d[`Age]:35                      / Assigning new value to key Age

q)d 
                              / New value assigned to key Age in d
Name   | `John
Age    | 35
Sex    | "M"
Weight | 60.3

색인 할당을 통해 사전을 확장 할 수 있습니다.

q)d[`Height]:"182 Ft"

q)d

Name   | `John
Age    | 35
Sex    | "M"
Weight | 60.3
Height | "182 Ft"

찾기 (?)를 사용한 역방향 조회

찾기 (?) 연산자는 요소 범위를 도메인 요소에 매핑하여 역방향 조회를 수행하는 데 사용됩니다.

q)d2:`x`y`z!99 88 77

q)d2?77
`z

목록의 요소가 고유하지 않은 경우 find 도메인 목록에서 첫 번째 항목 매핑을 반환합니다.

항목 제거

사전에서 항목을 제거하려면 delete ( _ ) function사용. (_)의 왼쪽 피연산자는 사전이고 오른쪽 피연산자는 키 값입니다.

q)d2:`x`y`z!99 88 77

q)d2 _`z

x| 99
y| 88

첫 번째 피연산자가 변수 인 경우 _ 왼쪽에 공백이 필요합니다.

q)`x`y _ d2           / Deleting multiple entries

z| 77

열 사전

열 사전은 테이블 생성의 기본입니다. 다음 예를 고려하십시오-

q)scores: `name`id!(`John`Jenny`Jonathan;9 18 27)
                              / Dictionary scores
                              
q)scores[`name]               / The values for the name column are
`John`Jenny`Jonathan

q)scores.name                 / Retrieving the values for a column in a
                              / column dictionary using dot notation.
`John`Jenny`Jonathan

q)scores[`name][1]            / Values in row 1 of the name column
`Jenny

q)scores[`id][2]              / Values in row 2 of the id column is
27

사전 뒤집기

열 사전 뒤집기의 순 효과는 단순히 인덱스 순서를 반대로하는 것입니다. 이것은 행과 열을 전치하는 것과 논리적으로 동일합니다.

열 사전 뒤집기

사전의 전치는 단항 반전 연산자를 적용하여 얻습니다. 다음 예를 살펴보십시오-

q)scores

name  | John Jenny Jonathan
id    | 9   18   27

q)flip scores

  name     id
---------------
  John     9
  Jenny    18
 Jonathan  27

뒤집힌 열 사전 뒤집기

사전을 두 번 전치하면 원래 사전을 얻습니다.

q)scores ~ flip flip scores
1b