首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Clojure -计算地图向量的累加和

Clojure -计算地图向量的累加和
EN

Stack Overflow用户
提问于 2019-07-31 02:24:24
回答 3查看 87关注 0票数 1

我想计算映射向量中场的累加和。发自:

代码语言:javascript
运行
复制
(def data
  [{:id 1 :name "John1" :income 5000}
   {:id 2 :name "John2" :income 6000}
   {:id 3 :name "John3" :income 7000}])

至:

代码语言:javascript
运行
复制
(def data
  [{:id 1 :name "John1" :income 5000}
   {:id 2 :name "John2" :income 11000}
   {:id 3 :name "John3" :income 18000}])

我有像(reductions + (map :income data))这样的东西来做计算,但是如何形成新的向量呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-07-31 04:03:22

要继续您的解决方案(如果您不介意重复两次数据):

代码语言:javascript
运行
复制
(map #(assoc %1 :income %2) data (reductions + (map :income data)))
; => ({:id 1, :income 5000, :name "John1"}
; =>  {:id 2, :income 11000, :name "John2"}
; =>  {:id 3, :income 18000, :name "John3"})

(或使用mapv保留向量)

票数 3
EN

Stack Overflow用户

发布于 2019-07-31 02:34:25

代码语言:javascript
运行
复制
> (reduce #(conj %1 (assoc %2 :income (+ (:income (last %1)) (:income %2)))) (vector (first data)) (rest data))
[{:id 1, :name "John1", :income 5000}
 {:id 2, :name "John2", :income 11000}
 {:id 3, :name "John3", :income 18000}]
票数 2
EN

Stack Overflow用户

发布于 2019-07-31 04:05:59

使用specter:

(transform (subselect ALL :income) #(reductions + %) data)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57277916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档