Словари являются расширением списков, которые служат основой для создания таблиц. В математических терминах словарь создает
«Домен → диапазон»
или вообще (коротко) создает
«Ключ → значение»
отношения между элементами.
Словарь — это упорядоченная коллекция пар ключ-значение, которая примерно эквивалентна хеш-таблице. Словарь — это отображение, определяемое явной ассоциацией ввода-вывода между списком доменов и списком диапазонов посредством позиционного соответствия. При создании словаря используется примитив xkey (!)
ListOfDomain ! ListOfRange
Самый основной словарь отображает простой список в простой список.
Вход (I) | Выход (O) |
---|---|
`Имя | `Джон |
`Возраст | 36 |
`Пол | «M» |
Вес | 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
Уважать
Поиск значения словаря, соответствующего входному значению, называется поиском ввода.
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
Операции над словарями
Поправка и одобрение
Как и в случае списков, элементы словаря могут быть изменены с помощью индексированного присваивания.
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"
Обратный поиск с Find (?)
Оператор find (?) Используется для обратного просмотра путем сопоставления диапазона элементов с его элементом домена.
q)d2:`x`y`z!99 88 77 q)d2?77 `z
В случае, если элементы списка не являются уникальными, find возвращает первое сопоставление элементов из списка доменов.
Удаление записей
Чтобы удалить запись из словаря, используется функция delete (_) . Левый операнд (_) — это словарь, а правый операнд — это ключевое значение.
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
Перевернутый словарь перевернутых столбцов
Если вы транспонируете словарь дважды, вы получаете оригинальный словарь,