Previous: Lists as Sets, Up: Lists

### 11.4 Association Lists

An association list is a list representing a mapping from one set of values to another; any list whose elements are cons cells is an association list.

— Function: assoc* item a-list `&key :test :test-not :key`

> This function searches the association list a-list for an element whose `car` matches (in the sense of `:test`, `:test-not`, and `:key`, or by comparison with `eql`) a given item. It returns the matching element, if any, otherwise `nil`. It ignores elements of a-list which are not cons cells. (This corresponds to the behavior of `assq` and `assoc` in Emacs Lisp; Common Lisp's `assoc` ignores `nil`s but considers any other non-cons elements of a-list to be an error.)

— Function: rassoc* item a-list `&key :test :test-not :key`

> This function searches for an element whose `cdr` matches item. If a-list represents a mapping, this applies the inverse of the mapping to item.

The `assoc-if`, `assoc-if-not`, `rassoc-if`, and `rassoc-if-not` functions are defined similarly.

Two simple functions for constructing association lists are:

— Function: acons key value alist

> This is equivalent to `(cons (cons` key value`)` alist`)`.

— Function: pairlis keys values &optional alist

> This is equivalent to `(nconc (mapcar* 'cons` keys values`)` alist`)`.