在向量的Clojure地图中排序向量

时间:2016-11-12 06:45:19

标签: sorting vector clojure

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

{2 ["a" "c" "b"], 1 ["z" "y" "x"]}

我想获得一个按键排序的地图,然后每个相应的矢量也会被排序,如下所示:

{1 ["x" "y" "z"], 2 ["a" "b" "c"]}

我知道我可以通过按(into (sorted-map) themap)来按键排序,而且我知道我可以为into提供一个传感器,但是我想知道传感器的外观应该是什么样的。这是我尝试过的换能器:

(defn xform [entry]
  (vector (first entry) (vec (sort (second entry)))))

然而,当我尝试将它应用到我的地图时,我得到了这个例外:

java.lang.IllegalArgumentException: Don't know how to create ISeq from: clojure.core$conj__4345

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

1 个答案:

答案 0 :(得分:4)

像这样:

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