Rob Buhler
Rob Buhler

Reputation: 2511

clojure convert lazy-seq to hash map

I'm a clojure beginner. How do I create a map from a lazySeq?

(def fields [:name :age :color])
(def values ["joe" 32 "red"])
(def record (interleave fields values))

(def mymap (into {} record))  ;; ????

;; (get mymap :age)
;; 32

Upvotes: 41

Views: 22019

Answers (2)

amalloy
amalloy

Reputation: 91857

To answer your actual question:

(apply hash-map record)

But since you actually already have separate keys and values, I would suggest skipping the interleave step and instead writing

(zipmap fields values)

Or if you have your heart set on into, you could

(into {} (map vector fields values))

Upvotes: 91

PaulaG
PaulaG

Reputation: 336

This isn't sensible at all, but since the original question wanted to use into with record:

(into {} (map vec (partition 2 record)))

Upvotes: 3

Related Questions