簡體   English   中英

Clojure:按第二個列表過濾地圖列表

[英]Clojure: filter list of maps by 2nd 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"})

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

我需要按第二個列表項過濾地圖列表,以獲得如下結果

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

但不知道如何。

特定

(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 (或被引用)。
  • 我假設您想按:c的值進行過濾,該值不必是打印地圖中的第二個條目。

您需要掌握Clojure的兩個或三個方面:

  • 序列功能如何像filter一樣工作。
  • 使用集合和關鍵字作為函數。
  • comp是做什么的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM