thisago's blog


association lists at elisp

Emacs Lisp has alists (association lists), and it works like maps in modern languages. Pretty easy to use:

(let ((key-value-pairs '(("name" . "John") ;; name -> John
                         ("age" . "30")))  ;; age  -> 30
      (key-values-pairs '(("fruits" "apple" "banana") ;; fruits     -> (apple banana)
                          ("vegetables" "beets"))))   ;; vegetables -> (beets)
  `(
    ,(assoc "age" key-value-pairs #'string-equal)
    ,(alist-get "name" key-value-pairs "not found" nil #'string-equal)
    ,(alist-get "vegetables" key-values-pairs '("none") nil #'string-equal)))
(("age" . "30") "John" ("beets"))

See more at Info node (elisp) Association Lists