【发布时间】:2021-08-06 13:43:15
【问题描述】:
我找到了关于如何按值排序地图的不同解决方案,但没有找到关于如何让键以特定顺序出现的解决方案。
我们知道键是自动排序的,不会以插入时的方式显示,但我们可以在之后以某种方式强制它吗?
例如,给定一张地图:
(def my-map {:one 1 :two 2 :three 3 :four 4 :five 5}),
我想更改它们的显示顺序。
所需的键在向量中
(def sorted-keys-here [:four :three :five :two :one])
这样,我希望地图在 sort-fn 应用后显示为:
=> {:four 4 :three 3 :five 5 :two 2 :one 1}
键始终是固定的,我会使用 map 对地图矢量执行此操作,但我无法应用这种排序。
有什么想法吗?
(编辑:问题不在于没有维护顺序。实际的问题是如何使映射中的键符合指定的顺序。映射将来自其他地方并在中间,所以无论如何不可能从一开始就以正确的顺序得到它)。
【问题讨论】:
-
@akond 不是真的!他们似乎已经通过在创建过程中使用ordered-map 解决了这个问题,但是我的用例需要通过计算创建地图,并且它们可能以任何顺序到达!所以我必须咨询一个外部向量来对它们进行排序。
标签: clojure