我在想什麼最習慣的方法來完成以下目標。我剛剛開始使用Clojure,我正在努力尋找操作不依賴於傳統迭代構造的數據結構的策略(for,while等)。在Clojure重組地圖。在當前地圖中創建相應的值到新地圖中
如果我有一個像下面這樣的映射結構:
(def test-map {:cat1-title "Title1", :cat1-val "Value1", :cat2-title "Title2", :cat2-val "Value2"})
而且我想將它轉變成以下結構:
{"Title1" "Value1", "Title2" "Value2"}
從本質上講,我想提出一個新的地圖,它的鍵是*標題鍵的值,和值是相應的*值鍵的值。
這樣做最好的clojure方法是什麼?
我試過的是以下內容(我不知道它是否會一直有效)。它本質上提取*標題值,然後用提取* VAL值
(let [titles
(vals (filter #(re-matches #".*-title"
(str (key %)))
test-map))
values
(vals (filter #(re-matches #".*-val"
(str (key %)))
test-map))]
(zipmap titles values))
這成功地提取鍵和值拉鍊他們,但我不知道是否有zipmap一起荏苒這是最好的方式,還是最將他們結合起來的慣用方式。
你能發佈一個嘗試,所以我們有更多的東西去? –
大部分問題是我不確定如何處理它,但我可以用我嘗試過的方法進行編輯。 – imcgaunn
是的,即使你不確定去哪裏,看到你到目前爲止嘗試過的東西仍然很好。 –