数据结构 – 在clojure中反转哈希映射

我在clojure中使用哈希映射:

{"key1" "value1"} {"key2" "value2"} {"key3" "value1"}

我需要将其转换为哈希映射

{"value1" {"key1" "key3"}} {"value2" {"key2"}}

这样做的任何clojure方式?

clojure.set / map-invert不会像重写值一样工作.

最佳答案
(def m {"key1" "value1" "key2" "value2" "key3" "value1"})

(let [g (group-by val m)
      vals (map #(map first %) (vals g))]
  (zipmap (keys g) vals))
;;=> {"value2" ("key2"), "value1" ("key1" "key3")}

转载注明原文:数据结构 – 在clojure中反转哈希映射 - 代码日志