Clojure: отфильтровать список карт по 2-му списку - PullRequest
0 голосов
/ 17 декабря 2018

Получил список карт типа

({: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").

Мне нужно отфильтровать список карт по записям 2-го списка для получения результата, подобногокак

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

, но не понимаю, как.

1 Ответ

0 голосов
/ 17 декабря 2018

Дано

(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.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...