Clojure,合并两个 map 数组

标签 clojure

我有两个 map 数组

第一个是[{:a 1 :b 2 :d 6} {:a 2 :b 2} {:a 7 :b 7}]

第二个是[{:a 3 :c 3 :e 9 :y 7} {:a 2 :b 6 :c 8}]

取决于a的值,即如果它在第二个数组中匹配,则“第二个 map ”应与“第一个 map ”合并,并且生成的 map 数组应为

Res 应该是 [{:a 1 :b 2 :d 6} {:a 2 :b 6 :c 8} {:a 7 :b 7} {:a 3 :c 3 :e 9 :y 7}]

任何人都可以帮我解决这个问题吗?提前致谢。

最佳答案

给你:

user> (def xs [{:a 1 :b 2 :d 6} {:a 2 :b 2} {:a 7 :b 7}])
#'user/xs
user> (def ys  [{:a 3 :c 3 :e 9 :y 7} {:a 2 :b 6 :c 8}])
#'user/ys
user> (for [[a ms] (group-by :a (concat xs ys))] (apply merge ms))
({:a 1, :b 2, :d 6} {:a 2, :c 8, :b 6} {:a 7, :b 7} {:y 7, :a 3, :c 3, :e 9})

关于Clojure,合并两个 map 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10209218/

相关文章:

list - Clojure:移动列表中的项目

Clojurescript 交换!和多个关联

断言抛出的 Clojure 测试

clojure - Neo4J 是否适合 clojure?

clojure - cljs 中的 pretty-print

clojure - clojure.core.logic 中是否有一个合乎逻辑的 for-all ?

clojure - 如何绑定(bind)动态变量?

postgresql - Postgres 和 Clojure JDBC 中的外键和字符限制

clojure - 记住 Clojure.core 有多大帮助

clojure - 为什么这个简单的 main 方法在 leiningen 运行时永远不会返回?