我从文件中读取数据,其中每行有两个值。每一行由表示文件的外部序列中的序列表示。
我想将数据重组为一系列地图以供进一步处理。
我知道如何根据键集和值序列创建地图:
=> (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
编辑:为了清晰起见,重命名了符号。
答案 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})