我刚开始学习Clojure,我想从地图矢量中获取两个关键字。
假设有一个向量
(def a [{:id 1, :description "bla", :amount 12, :type "A", :other "x"} {:id 2, :description "blabla", :amount 10, :type "B", :other "y"}])
我想要一个新的载体
[{"bla" 12} {"blabla" 10}]
我该怎么做? 谢谢!
答案 0 :(得分:6)
假设您希望单独:description
和:amount
,而不是将地图映射到另一个的地图,您可以使用juxt
同时检索两者:
(mapv (juxt :description :amount) a)
;; => [["bla" 12] ["blabla" 10]]
如果您确实打算制作地图,可以使用例如apply
和hash-map
来执行此操作:
(mapv #(apply hash-map ((juxt :description :amount) %)) a)
;; => [{"bla" 12} {"blabla" 10}]
答案 1 :(得分:3)
您可以使用mapv
映射源矢量。在转换函数中,您可以构造每个映射以提取所需的键并构造结果:
(mapv (fn [{:keys [description amount]}] {description amount}) a)
答案 2 :(得分:3)
(mapv #(hash-map (:description %) (:amount %)) a)