如何从 clojure 中向量中的一系列映射中删除给定键?
how to remove a given key from a series of maps in a vector in clojure?
在 clojure 中,给定一个数据结构 [{:a "foo" :b "bar"} {:a "biz" :b "baz"}]
我怎样才能最简洁地得到 [{:b "bar"}{:b "baz"}]
?
dissoc
是一个函数,用于将键与关联结构(如映射)分离。以下是使用一张地图的方法:
(dissoc my-map :a)
如果您有一系列地图,您可以 map
对它们使用函数 dissoc
来自每个地图的键:
(map #(dissoc % :a) the-maps)
此措辞将 anonymous function 传递给 map
,但根据使用情况,您可能希望提取命名函数:
(defn fix-the-map [m]
(dissoc m :a))
(map fix-the-map the-maps)
@Taylor 在每张地图上对 dissoc
:a
的以上回答很好,如果你想要所有没有 :a
的地图。
如果你想要一个只有 :b
键的地图列表,你可以做
<!-- language-all: lang-clj -->
;; Assuming my-map is the object map
;; map returns a lazy sequence
(map #(hash-map :b (:b %)) my-map)
;; or
(map #(select-keys % [:b]) mp)
在 clojure 中,给定一个数据结构 [{:a "foo" :b "bar"} {:a "biz" :b "baz"}]
我怎样才能最简洁地得到 [{:b "bar"}{:b "baz"}]
?
dissoc
是一个函数,用于将键与关联结构(如映射)分离。以下是使用一张地图的方法:
(dissoc my-map :a)
如果您有一系列地图,您可以 map
对它们使用函数 dissoc
来自每个地图的键:
(map #(dissoc % :a) the-maps)
此措辞将 anonymous function 传递给 map
,但根据使用情况,您可能希望提取命名函数:
(defn fix-the-map [m]
(dissoc m :a))
(map fix-the-map the-maps)
@Taylor 在每张地图上对 dissoc
:a
的以上回答很好,如果你想要所有没有 :a
的地图。
如果你想要一个只有 :b
键的地图列表,你可以做
<!-- language-all: lang-clj -->
;; Assuming my-map is the object map
;; map returns a lazy sequence
(map #(hash-map :b (:b %)) my-map)
;; or
(map #(select-keys % [:b]) mp)