Sorting Clojure向量映射中的向量排序
我有一张矢量图,像这样:Sorting Clojure向量映射中的向量排序,sorting,vector,clojure,Sorting,Vector,Clojure,我有一张矢量图,像这样: {2 ["a" "c" "b"], 1 ["z" "y" "x"]} {1 ["x" "y" "z"], 2 ["a" "b" "c"]} 我想得到一个按键排序的地图,然后每个对应的向量也被排序,如下所示: {2 ["a" "c" "b"], 1 ["z" "y" "x"]} {1 ["x" "y" "z"], 2 ["a" "b" "c"]} 我知道我可以通过执行(进入(已排序的地图)地图),按键排序,我知道我可以提供一个传感器到进入,但我不知道传感器应该是什
{2 ["a" "c" "b"], 1 ["z" "y" "x"]}
{1 ["x" "y" "z"], 2 ["a" "b" "c"]}
我想得到一个按键排序的地图,然后每个对应的向量也被排序,如下所示:
{2 ["a" "c" "b"], 1 ["z" "y" "x"]}
{1 ["x" "y" "z"], 2 ["a" "b" "c"]}
我知道我可以通过执行(进入(已排序的地图)地图)
,按键排序,我知道我可以提供一个传感器到进入
,但我不知道传感器应该是什么样子。这是我试过的一个传感器:
(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 (sorted-map)
(map (fn [[k v]] [k (vec (sort v))]))
{2 ["a" "c" "b"], 1 ["z" "y" "x"]})
你差点就成功了。您没有使用map
功能创建map
传感器<代码>(映射变换)
,但您不应该将此函数称为变换,因为它还不是传感器,只是一个函数。