Создать пустой словарь ёмкостью N элементов можно с помощью оператора dict. Его синтаксис:
число_элементов dict à словарь
Этот пустой словарь помещается в стек операндов. Аргумент число_элементов не может быть отрицательным.
Оператор currentdict выполняет обратное действие – помещает копию текущего словаря в стек операндов.
Синтаксис: - currentdict à словарь
Оператор countdictstack пересчитывает число словарей, находящихся в стеке словарей, и помещает это число в стек операндов.
Синтаксис: - countdictstack à int
Оператор cleardictstack извлекает из стека все словари, кроме постоянных.
Синтаксис: - cleardictstack à -
Для замены или внесения нового элемента в словарь используется оператор put. На самом деле этот оператор полиморфен и позволяет также заменять элементы массивов и строк.
Синтаксис:
массив индекс значение put à -
словарь ключ значение put à -
строка индекс целое put à -
Если первый операнд массив или строка, то второй рассматривается как индекс, значение которого лежит в диапазоне от 0 до n-1 (где n – длина строки или массива). Элемент с этим индексом замещается третьим операндом.
Если первый операнд — массив, то второй — рассматривается как ключ и в словаре сохраняется пара ключ--значение, если данный ключ не будет найден, либо замещается только значение, если пара с таким ключом уже существует. Конечно, при создании нового входа в словарь интерпретатор проверяет наличие там свободного места и выдаёт сообщение об ошибке dictfull, если число входов уже исчерпано.
Пример.
/mydict 10 dict def
mydict /A 65 put
Обратное действие выполняет оператор get. С его помощью можно получить значение элемента массива, строки или по ключу найти соответствующее значение в словаре.
Синтаксис:
массив индекс put à значение
словарь ключ put à значение
строка индекс put à целое
Пример.
/abc [1 2 3] def
currentdict /abc get à [1 2 3]
Со словарём очень интересно работает также оператор forall. Ранее его действие рассматривалось только по отношению к массиву, но он, как и два предыдущих оператора, работает и со словарями, и со строками.
Синтаксис:
массив proc forall à -
словарь proc forall à -
строка proc forall à -
Если первый операнд — словарь, то forall помещает ключ и значение в стек операндов и выполняет заданную процедуру (proc) над каждой парой ключ--значение в словаре. Если процедура пустая "{}", то таким образом все пары из словаря просто переписываются в стек операндов.