# construct an association list from two vectors

I have two vectors, `[apple orange]` and `[5 10]`. How do I construct an association list `((apple 5) (orange 10))` from them?

You can use `cl-pairlis`:

``````(require 'cl-lib)

(cl-pairlis '(apple orange) '(5 10))
;; =>
;; ((apple . 5) (orange . 10))
``````

Also works for vectors:

``````(cl-pairlis [apple orange] [5 10])
;; =>
;; ((apple . 5) (orange . 10))
``````

(The `cl` library defines the shorter alias `pairlis` for `cl-pairlis`, but this is deprecated in newer Emacs versions.)

• Hi abo-abo, It works like magic! I'd like to save the association list to a file, do you know any good function for this? (insert doesn't work)... – yi.tang.uni May 15 '15 at 10:25
• (insert (prin1-to-string (pairlis [apple orange] [5 10]))) – abo-abo May 15 '15 at 10:34
• Interesting, I didn't realise it works on vectors (which would appear to be an undocumented feature). – jch May 15 '15 at 10:49
• @abo-abo that's great, thank you very much! saved me a lot time googling! – yi.tang.uni May 15 '15 at 13:20

`(cl-mapcar #'cons [apple orange] [5 10])` => `((apple . 5) (orange . 10))`

`(cl-mapcar #'list [apple orange] [5 10])` => `((apple 5) (orange 10))`

Emacs's `cl-mapcar` takes as arguments a function of arity one or more and the same number of sequences as its arity. Common Lisp's `mapcar` is similar, but the only sequences it accepts are lists.