【发布时间】:2011-12-17 04:38:13
【问题描述】:
我试图通过它们的公共键来总结一组地图的值。我有这个sn-p:
(def data [{:a 1 :b 2 :c 3} {:a 1 :b 2 :c 3}]
(for [xs data] (map xs [:a :b]))
((1 2) (1 2))
Final result should be ==> (2 4)
基本上,我有一张地图列表。然后我执行一个理解列表,只取我需要的键。
我现在的问题是如何总结这些值?我尝试使用“减少”,但它只适用于序列,而不适用于集合。
谢谢。
===编辑====
使用 Joost 的建议,我得出了这个结论:
(apply merge-with + (for [x data] (select-keys x [:col0 :col1 :col2]))
这会迭代一个集合并对所选键求和。我添加的“选择键”部分尤其需要避免在集合中的地图包含文字而不仅仅是数字时遇到麻烦。
【问题讨论】:
标签: collections clojure maps sum reduce