如何使用Clojure将一个序列的序列转换为一个映射序列?

3
我正在读取一个文件中的数据,其中每行有两个值。每一行都由外部序列中的一个序列表示,该序列代表文件。
我想将数据重组成地图序列以进行进一步处理。
我知道如何从键集和值序列创建地图:
=> (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个回答

5

结构体已经过时了,现在更倾向于使用记录。

(defrecord Person [name age])

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

3
使用zipmap函数。
(map (partial zipmap [:name :age]) '(("John" 34) ("Lisa" 41)))

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接