【发布时间】:2012-03-12 16:42:29
【问题描述】:
在 clojure 中,我想汇总这些数据:
(def data [[:morning :pear][:morning :mango][:evening :mango][:evening :pear]])
(group-by first data)
;{:morning [[:morning :pear][:morning :mango]],:evening [[:evening :mango][:evening :pear]]}
我的问题是:evening 和:morning 是多余的。
相反,我想创建以下集合:
([:morning (:pear :mango)] [:evening (:mango :pear)])
我想出了:
(for [[moment moment-fruit-vec] (group-by first data)] [moment (map second moment-fruit-vec)])
有没有更惯用的解决方案?
【问题讨论】:
-
您提出的解决方案中的变量名具有误导性。解构为“fruit”的值实际上是一系列时刻-水果对向量。
-
非常感谢!更新了问题
标签: clojure group-by aggregate-functions