2015-08-20 39 views
3

我正在從文件中讀取每行有兩個值的數據。每行代表文件外部序列中的序列。如何使用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 

編輯:爲清楚起見,重命名符號。

回答

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})