clojure sort总是返回一个列表

时间:2016-02-18 22:55:31

标签: clojure

在clojure中对矢量进行排序

(sort [ 2 3 1 4])

返回一个列表(已排序)

(1 2 3 4)

我可以通过

将其转回矢量
(into [] (sort [ 2 3 1 4]))

这有点不方便。

但是如果我在clojure中对地图/字典进行排序

(sort {2 "" 3 "" 1 "" 4 ""})

回归

([1 ""] [2 ""] [3 ""] [4 ""])

如何将其重新转换为有序地图?或者是否有更好的排序功能来保持输入的类型/形状?

1 个答案:

答案 0 :(得分:3)

我不知道一直保持原始类型/形状的一般方法。

如果是有序的地图,重要的是要知道clojure中的常规地图没有顺序(至少没有任何你可以或应该依赖的地图)。因为那个clojure有sorted-map。还有一个有用的函数sorted-map-by,允许您指定自己的顺序。

所以,在你的例子中:

(into (sorted-map)  {2 "" 3 "" 1 "" 4 ""})
;; {1 "", 2 "", 3 "", 4 ""}