如何将序列序列转换为具有clojure的地图序列?

时间:2015-08-20 21:44:30

标签: clojure

我从文件中读取数据,其中每行有两个值。每一行由表示文件的外部序列中的序列表示。

我想将数据重组为一系列地图以供进一步处理。

我知道如何根据键集和值序列创建地图:

=> (defstruct entry :name :age)
=> (apply struct entry '("John" 34))
{:name "John", :age 34}

但是,如何根据一系列值序列创建一系列此类地图?

(map (apply struct entry) '(("John" 34) ("Lisa" 41))))

结果:

java.lang.IllegalArgumentException: Don't know how to create ISeq from: clojure.lang.PersistentStructMap$Def

编辑:为了清晰起见,重命名了符号。

2 个答案:

答案 0 :(得分:5)

结构已经过时,首选是使用记录。

(defrecord Person [name age])

(map (partial apply ->Person) '(("John" 34) ("Lisa" 41)))

答案 1 :(得分:3)

使用zipmap

(map (partial zipmap [:name :age]) '(("John" 34) ("Lisa" 41)))

;-> ({:name "John", :age 34} {:name "Lisa", :age 5})