clojure convert lazy-seq to hash map
20,695
Solution 1
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))
Solution 2
This isn't sensible at all, but since the original question wanted to use into
with record
:
(into {} (map vec (partition 2 record)))
Author by
Rob Buhler
Updated on February 07, 2021Comments
-
Rob Buhler over 3 years
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
-
Reb.Cabin over 7 yearsIn what way is this alternative not sensible (not a rhetorical question, a genuine question)? Is it because it's longer and / or more elaborate than the other alternatives, i.e., it's "beating around the bush??
-
amalloy over 7 yearsIt also silently drops a value instead of throwing an exception, if
record
unexpectedly has an odd number of elements. Although on reflection, I suppose the solutions that make use of the separate key and value sequences have a similar issue.