Clojure:按第二个列表过滤地图列表

时间:2018-12-17 11:55:41

标签: list dictionary filter clojure

有一张类似的地图列表

({:a "a" :b "b" :c "c"}
 {:a "d" :b "e" :c "f"}
 {:a "g" :b "h" :c "i"}
 {:a "j" :b "k" :c "l"})

和第二个列表,例如("c" "i")

我需要按第二个列表项过滤地图列表,以获得类似

的结果

({:a "a" :b "b" :c "c"} {:a "g" :b "h" :c "i"})

但是不知道怎么做。

1 个答案:

答案 0 :(得分:3)

给予

gcr.io/cloudsql-docker/gce-proxy:1.11

然后

(def data
   (list
     {:a "a" :b "b" :c "c"}
     {:a "d" :b "e" :c "f"}
     {:a "g" :b "h" :c "i"}
     {:a "j" :b "k" :c "l"}))
  • 您的列表需要=> (filter (comp (set (list "c" "i")) :c) data) ({:a "a", :b "b", :c "c"} {:a "g", :b "h", :c "i"}) 作为运算符(或被引用)。
  • 我假定您要按键list的值进行过滤,该键不必是打印地图中的第二个条目。

您需要掌握Clojure的两个或三个方面:

  • :c这样的序列功能如何工作。
  • 将集合和关键字用作函数。
  • filter的作用。