按值 属性 对地图进行排序

Sort map by value property

我目前正在尝试找出一种方法来重新排列现有地图中的条目,该方法基于应用于其值的函数,例如 count:

(def map1 '{A: (1 2 3) B: (1 2) C: (5) } )

排序方式(count (vals map1))

=> {C: (5) B: (1 2) A: (1 2 3)}

有什么直接的方法可以做到这一点吗? 非常感谢!

sort-by与匿名函数一起使用:

(def map1 '{:A (1 2 3) :B (1 2) :C (5)})
(sort-by (fn [e] (count (val e))) map1)
(sort-by #(count (val %)) map1)

composition:

(sort-by (comp count val) map1) 
=> ([:C (5)] [:B (1 2)] [:A (1 2 3)])