在 Clojure 向量图中对向量进行排序

Jef*_*att 4 sorting vector clojure

我有一张矢量地图,如下所示:

{2 ["a" "c" "b"], 1 ["z" "y" "x"]}
Run Code Online (Sandbox Code Playgroud)

我想得到一个按key排序的map,然后每个对应的vector也进行排序,像这样:

{1 ["x" "y" "z"], 2 ["a" "b" "c"]}
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过执行按键排序(into (sorted-map) themap),并且我知道我可以为 提供换能器into,但是我对换能器的确切外观很不了解。这是我试过的换能器:

(defn xform [entry]
  (vector (first entry) (vec (sort (second entry)))))
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试将其应用到我的地图时,出现以下异常:

java.lang.IllegalArgumentException: Don't know how to create ISeq from: clojure.core$conj__4345
Run Code Online (Sandbox Code Playgroud)

我怎样才能让它发挥作用?有没有比使用into换能器更好的方法?

Clo*_*tly 6

像这样:

(into (sorted-map)
      (map (fn [[k v]] [k (vec (sort v))]))
      {2 ["a" "c" "b"], 1 ["z" "y" "x"]})
Run Code Online (Sandbox Code Playgroud)