将哈希图列表转换为集合
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
解决方案绝对没问题。
有两张地图:
(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
解决方案绝对没问题。