是否有一个函数来交换给定地图的键和值.因此,给定一个地图,我希望键成为值,并为键值.
(swap {:a 2 b 4}) => {2 :a 4 :b}
Run Code Online (Sandbox Code Playgroud)
一种方法是
(zipmap (vals my-map) (keys my-map))
Run Code Online (Sandbox Code Playgroud)
但是想知道clojure是否为此提供了实用程序fn?
这类似于Clojure get map key by value
但是,有一点不同.如果像hm那样你会怎么做同样的事情
{1 ["bar" "choco"]}
Run Code Online (Sandbox Code Playgroud)
想法是获得1(键)第一个元素,如果值列表是"bar"?如果其他问题得到解答,请随时关闭/合并此问题.
我试过这样的东西,但它不起作用.
(def hm {:foo ["bar", "choco"]})
(keep #(when (= ((nth val 0) %) "bar")
(key %))
hm)
Run Code Online (Sandbox Code Playgroud) clojure ×2