Я пытаюсь суммировать значения набора карт по их общим ключам.У меня есть этот фрагмент:
(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]))
Это повторяет коллекцию и суммы по выбранным ключам.Часть «ключи выбора», которую я добавил, особенно необходима, чтобы избежать неприятностей, когда карты в коллекции содержат литералы, а не только цифры.