Map 在Clojure中分割地图的惯用方法是什么?
对于列表和向量,我们可以对序列进行切片并获取所需的任何部分。 如何对贴图对象执行类似操作 例如,我有一个映射对象列表Map 在Clojure中分割地图的惯用方法是什么?,map,clojure,standard-library,Map,Clojure,Standard Library,对于列表和向量,我们可以对序列进行切片并获取所需的任何部分。 如何对贴图对象执行类似操作 例如,我有一个映射对象列表 (def plays [ {:name "Burial", :plays 979, :loved 9} {:name "Eno", :plays 2333, :loved 15} {:name "Bill", :plays 979, :loved 9} {:name "Magma
(def plays [
{:name "Burial", :plays 979, :loved 9}
{:name "Eno", :plays 2333, :loved 15}
{:name "Bill", :plays 979, :loved 9}
{:name "Magma", :plays 2665, :loved 31}])
对于每个地图,我想切掉plays列,并添加带有默认值的rate列,这样做的惯用方法是什么?
assoc
和dissoc
在这种情况下是您的朋友:
(map #(-> % (dissoc :plays)
(assoc :rate 10)) plays)
根据您的用例,除了
assoc
和dissoc
之外,您还可能会发现select key
很有用:
clojure.core/select-keys
([map keyseq])
Returns a map containing only those entries in map whose key is in keys
(select-keys {:name "Eno" :plays 2333 :loved 15} [:name :loved])
;; => {:name "Eno" :loved 15}