gpt4 book ai didi

clojure - 如何从 map 中删除多个键?

转载 作者:行者123 更新时间:2023-12-03 00:58:38 25 4
gpt4 key购买 nike

我有一个从 map 中删除键的函数:

(defn remove-key [key map]
(into {}
(remove (fn [[k v]] (#{key} k))
map)))

(remove-key :foo {:foo 1 :bar 2 :baz 3})

如何使用多个按键应用此功能?

(remove-keys [:foo :bar] {:foo 1 :bar 2 :baz 3})

我有一个使用循环...recur 的实现。在 Clojure 中是否有更惯用的方法来执行此操作?

(defn remove-keys [keys map]
(loop [keys keys
map map]
(if (empty? keys)
map
(recur (rest keys) (remove-key (first keys) map)))))

最佳答案

标准库函数 dissoc 涵盖了您的 remove-key 函数。 dissoc 将一次删除多个键,但它希望直接在参数列表中而不是在列表中给出键。因此,您可以使用 apply 将其“展平”。

(apply dissoc {:foo 1, :bar 2, :baz 3} [:foo :bar])
==> {:baz 3}

关于clojure - 如何从 map 中删除多个键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9717606/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com