按值 属性 对地图进行排序
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)])
我目前正在尝试找出一种方法来重新排列现有地图中的条目,该方法基于应用于其值的函数,例如 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)])