将哈希图列表转换为集合

Transforming list of hashmaps into set

有两张地图:

(def a {:a 1 :b 2 :c 3})
(def b {:b 222 :d 4})

放入一个向量中:

(def l [a b])

构建集合(根据唯一键的结构)的最简单方法是什么).换句话说,我想得到一个结果:

{:a 1 :b 2 :c 3 :d 4}

想到的两个解决方案是:

(apply merge-with (fn [left _] left) l)
(reduce conj (reverse l))

第一个对我来说似乎不是惯用的,第二个让我担心,因为急切的列表反转听起来有点无能。还有其他想法吗?

怎么样

(apply merge (reverse l))

看起来不错,和第二个差不多。

可以考虑 (reduce #(into %2 %1) l)(或使用 merge 而不是 into)的许多其他可能性。您的 merge-with 解决方案绝对没问题。