在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 ""])
如何将其重新转换为有序地图?或者是否有更好的排序功能来保持输入的类型/形状?
答案 0 :(得分:3)
我不知道一直保持原始类型/形状的一般方法。
如果是有序的地图,重要的是要知道clojure中的常规地图没有顺序(至少没有任何你可以或应该依赖的地图)。因为那个clojure有sorted-map
。还有一个有用的函数sorted-map-by
,允许您指定自己的顺序。
所以,在你的例子中:
(into (sorted-map) {2 "" 3 "" 1 "" 4 ""})
;; {1 "", 2 "", 3 "", 4 ""}