【发布时间】:2016-12-04 17:51:36
【问题描述】:
我希望能够通过键的值对哈希映射进行排序,在出现平局时使用键名本身
我有一个取自 Clojure wiki https://clojuredocs.org/clojure.core/sorted-map-by#example-542692d5c026201cdc327094 的排序函数
(defn order-map [target]
(into (sorted-map-by (fn [key1 key2]
(compare [(target key2) key2]
[(target key1) key1]))) target))
目前我可以做到
(-> "notarealroom" frequencies order-map)
哪个输出
{\o 3, \r 2, \a 2, \t 1, \n 1, \m 1, \l 1, \e 1}
但我希望能够对具有相同值的那些键进行排序,例如\r 和 \a 按字母顺序给出如下内容...
{\o 3, \a 2, \r 2, \e 1, \l 1, \m 1, \n 1, \t 1}
我不确定如何修改比较函数来处理这种抢七场景
【问题讨论】:
-
你在做 Advent of Code 吗?我也解决了这个问题,但不需要排序图。只需对频率的结果进行排序就足够了。如果您想要我的完整解决方案,请查看github.com/borkdude/aoc2016。
-
你猜对了,我只是想改进我的基本 Clojure。您的解决方案非常简洁!非常感谢您的指点
标签: clojure