繁体   English   中英

在Clojure中分发和合并哈希图元素

[英]Distributing and merging hash-map elements in Clojure

什么是转换此集合的最快方法:

[[{:a 1} {:a 2} {:a 3}] [{:b 4} {:b 5} {:b 6}] [{:c 7} {:c 8} {:c 9}]]

进入这个收藏?

[{:a 1, :b 4, :c 7} {:a 2, :b 5, :c 8} {:a 3, :b 6, :c 9}]

我想出了这个,但我仍然觉得它可能会更短:

(map (partial apply merge) 
     (apply map vector collection))

请注意,数字是随机选择的,只是为了表明每个val的内容都是唯一的...

(def data [[{:a 1} {:a 2} {:a 3}] [{:b 4} {:b 5} {:b 6}] [{:c 7} {:c 8} {:c 9}]])

(apply mapv merge data)
;=> [{:a 1, :c 7, :b 4} {:a 2, :c 8, :b 5} {:a 3, :c 9, :b 6}]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM