Clojure 如何将贴图序列转换为具有选定关键帧的贴图序列?

Clojure 如何将贴图序列转换为具有选定关键帧的贴图序列?,clojure,Clojure,我有一系列这样的地图 ({:a 1 :b 2 : c 4} {:a 3 :b 3 :d 4}) 我想把它转换成一系列更紧凑的贴图,它们只有:a和:b键,像这样: ({:a 1 :b 2} {:a 3 :b 3}) 最简洁的方法是什么?内置函数就是您想要的 (let [in [{:a 1 :b 2 :c 4} {:a 3 :b 3 :d 4}]] (map #(select-keys % [:a :b]) in)) 一个更通用的解决方案是编写一个函数,该函数接受您想要保留的

我有一系列这样的地图

({:a 1 :b 2 : c 4} {:a 3 :b 3 :d 4})
我想把它转换成一系列更紧凑的贴图,它们只有:a和:b键,像这样:

({:a 1 :b 2} {:a 3 :b 3})
最简洁的方法是什么?

内置函数就是您想要的

(let [in [{:a 1 :b 2 :c 4} {:a 3 :b 3 :d 4}]]
  (map #(select-keys % [:a :b])
       in))

一个更通用的解决方案是编写一个函数,该函数接受您想要保留的键,并在映射上返回一个fn。然后将其映射到映射序列上:

(defn keep-keys
  [ks]
  (fn [m] (select-keys m ks)))

(map (keep-keys [:a :b]) '({:a 1 :b 2 :c 4} {:a 3 :b 3 :d 4}))