有两张地图:
(def a {:a 1 :b 2 :c 3})
(def b {:b 222 :d 4})
放入一个载体:
(def l [a b])
构造集合的最简单方法(就唯一键的结构而言),其中在键冲突的情况下优先级(在这种情况下为b)具有左操作数(:b 2 in这个案例)。换句话说,我想得到一个结果:
{:a 1 :b 2 :c 3 :d 4}
我想到的两个解决方案是:
(apply merge-with (fn [left _] left) l)
(reduce conj (reverse l))
第一个对我来说似乎并不恰当,第二个让我担心,因为急切的列表反转听起来有点不合适。还有其他想法吗?
答案 0 :(得分:1)
可以考虑(reduce #(into %2 %1) l)
(或merge
代替into
)的许多其他可能性。你的merge-with
解决方案绝对没问题。
答案 1 :(得分:0)
怎么样
(apply merge (reverse l))
它似乎很好,而且与第二个相似。