Для этой цели лучше использовать функцию «удалить». Он принимает последовательность и удаляет элементы, для которых его предикат возвращает значение true. Это в основном противоположность фильтра. Вот пример этого и использование фильтра для тех же целей, которые я разработал через REPL.
user> (def m1 {:name "eric" :age 32})
#'user/m1
user> (def m2 {:name "Rayne" :age 15})
#'user/m2
user> (def m3 {:name "connie" :age 44})
#'user/m3
user> (def mylist (list m1 m2 m3))
#'user/mylist
user> (filter #(not= (:name %) "eric") mylist)
({:name "eric", :age 32})
user> (remove #(= (:name %) "eric") mylist)
({:name "Rayne", :age 15} {:name "connie", :age 44})
Как видите, удаление немного чище, потому что вам не нужно использовать not =. Кроме того, при работе с картами вам не нужно использовать функцию «get», если вы не хотите, чтобы она возвращала что-то особенное, если ключ отсутствует на карте. Если вы знаете, что ключ, который вы ищете, будет на карте, нет смысла использовать «get». Удачи!