Q Sprache - Wörterbücher

Wörterbücher sind eine Erweiterung von Listen, die die Grundlage für die Erstellung von Tabellen bilden. In mathematischen Begriffen erstellt das Wörterbuch die

"Domain → Range"

oder im Allgemeinen (kurz) erstellt

"Schlüssel → Wert"

Beziehung zwischen Elementen.

Ein Wörterbuch ist eine geordnete Sammlung von Schlüssel-Wert-Paaren, die in etwa einer Hash-Tabelle entspricht. Ein Wörterbuch ist eine Zuordnung, die durch eine explizite E / A-Zuordnung zwischen einer Domänenliste und einer Bereichsliste über Positionskorrespondenz definiert wird. Bei der Erstellung eines Wörterbuchs wird das Grundelement "xkey" (!) Verwendet.

ListOfDomain ! ListOfRange

Das einfachste Wörterbuch ordnet eine einfache Liste einer einfachen Liste zu.

Eingabe (I) Ausgang (O)
`Name `John
`Alter 36
`Sex "M"
Gewicht 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

Nachsehen

Das Finden des Wörterbuchausgabewerts, der einem Eingabewert entspricht, wird aufgerufen looking up die Eingabe.

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"

Nachschlagen mit Verb @

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

q)d1[`two]
18

q)d1@`two
18

Operationen an Wörterbüchern

Ändern und Upsert

Wie bei Listen können die Elemente eines Wörterbuchs über eine indizierte Zuordnung geändert werden.

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

Wörterbücher können über die Indexzuordnung erweitert werden.

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

q)d

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

Reverse Lookup mit Find (?)

Der Operator find (?) Wird verwendet, um eine umgekehrte Suche durchzuführen, indem ein Bereich von Elementen seinem Domänenelement zugeordnet wird.

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

q)d2?77
`z

Falls die Elemente einer Liste nicht eindeutig sind, wird die find Gibt die erste Elementzuordnung aus der Domänenliste zurück.

Einträge entfernen

Um einen Eintrag aus einem Wörterbuch zu entfernen, klicken Sie auf delete ( _ ) functionwird eingesetzt. Der linke Operand von (_) ist das Wörterbuch und der rechte Operand ist ein Schlüsselwert.

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

q)d2 _`z

x| 99
y| 88

Links von _ ist ein Leerzeichen erforderlich, wenn der erste Operand eine Variable ist.

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

z| 77

Spaltenwörterbücher

Spaltenwörterbücher sind die Grundlagen für die Erstellung von Tabellen. Betrachten Sie das folgende Beispiel -

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

Ein Wörterbuch umblättern

Der Nettoeffekt beim Umblättern eines Spaltenwörterbuchs besteht einfach darin, die Reihenfolge der Indizes umzukehren. Dies entspricht logischerweise der Transponierung der Zeilen und Spalten.

Blättern Sie in einem Spaltenwörterbuch

Die Transponierung eines Wörterbuchs wird durch Anwenden des unären Flip-Operators erhalten. Schauen Sie sich das folgende Beispiel an -

q)scores

name  | John Jenny Jonathan
id    | 9   18   27

q)flip scores

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

Flip eines gespiegelten Spaltenwörterbuchs

Wenn Sie ein Wörterbuch zweimal transponieren, erhalten Sie das Originalwörterbuch.

q)scores ~ flip flip scores
1b