带有多值键的zipmap

Mar*_*tus 2 clojure zipmap

下列:

(zipmap '(:a :b :c :c) '(1  2  3  4))
Run Code Online (Sandbox Code Playgroud)

逃避: {:c 4, :b 2, :a 1}

我想得到:

{:c '(3 4) :b '(2) :a '(1)}
Run Code Online (Sandbox Code Playgroud)

代替.

我应该如何定义自己的zipmap两个列表并返回一个具有多个键值的映射?

Joe*_*ann 5

这样做

(defn zippy [l1 l2]
  (apply merge-with concat (map (fn [a b]{a (list b)}) l1 l2)))
        ;;; ? #'user/zippy

(zippy '(:a :b :c :c) '(1  2  3  4))
        ;;; ? {:c (3 4), :b (2), :a (1)}
Run Code Online (Sandbox Code Playgroud)