web-dev-qa-db-ja.com

clojureはlazy-seqをハッシュマップに変換します

私はクロジュールの初心者です。 lazySeqからマップを作成するにはどうすればよいですか?

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

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

;; (get mymap :age)
;; 32
39
Rob Buhler

あなたの実際の質問に答えるには:

(apply hash-map record)

しかし、実際にはすでに別々のキーと値を持っているので、

(zipmap fields values)

または、intoに心を向けているなら、

(into {} (map vector fields values))
85
amalloy

これはまったく賢明ではありませんが、元の質問ではintorecordとともに使用したかったためです。

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

2
PaulaG