clojure конвертировать lazy-seq в хэш-карту - PullRequest
37 голосов
/ 12 августа 2011

Я начинающий в ближайшем будущем.Как мне создать карту из lazySeq?

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

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

;; (get mymap :age)
;; 32

Ответы [ 2 ]

81 голосов
/ 12 августа 2011

Чтобы ответить на ваш актуальный вопрос:

(apply hash-map record)

Но поскольку у вас уже есть отдельные ключи и значения, вы можете использовать

(zipmap fields values)

Или, если ваше сердце настроено на into, вы могли бы

(into {} (map vector fields values))
1 голос
/ 23 декабря 2015

Это вообще не имеет смысла, но так как в первоначальном вопросе хотелось использовать into с record:

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

...