地图矢量上的GROUP BY和聚合 – Clojure

前端之家收集整理的这篇文章主要介绍了地图矢量上的GROUP BY和聚合 – Clojure前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的数据看起来像这样
  1. (def a [{:firmAccount "MSFT" :Val 10 :PE 3 }
  2. {:firmAccount "MSFT" :Val 15 :PE 4}
  3. {:firmAccount "GOG" :Val 15 :PE 3}
  4. {:firmAccount "YAH" :Val 8 :PE 1}])

我想分组:firmAccount,然后将每个公司账户的:和Val和:PE合并,得到类似的东西

  1. [{:firmAccount "MSFT" :Val 25 :PE 7}
  2. {:firmAccount "GOG" :Val 15 :PE 3}
  3. {:FirmAccount "YAH" :Val 8 :PE 1}]

这真是一件微不足道的事情,在sql中我甚至不会三思而后行,但是因为我正在学习clojure,请耐心等待

Clojure.core具有内置的分组功能.由于地图中存在text和int,解决方案变得有点难看.
  1. (for [m (group-by :firmAccount a)]
  2. (assoc (apply merge-with + (map #(dissoc % :firmAccount) (val m))) :firmAccount (key m)))

猜你在找的设计模式相关文章