有没有办法在多个密钥上加入clojure集? 例如,我有set1和set2。我想加入基于键的键:a和:b
(def set1 #{ {:a 1 :b 2 :c 3} {:a 3 :b 4 :c 5} })
(def set2 #{ {:a 1 :b 2 :d 4} {:a 3 :b 4 :d 6} {:a 7 :b 7} {:a 1 :b 2 :c 4}})
期望的输出是
#{{:a 1 :b 2 :c 3 :d 4} {:a 1 :b 2 :c 4} {:a 3 :b 4 :c 5 :d 6} }
答案 0 :(得分:5)
这样做的一种方法是使用clojure.set / join:
(clojure.set/join set1 set2 {:a :a :b :b})
它根据地图{:a :a :b :b}
加入set1和set2,这意味着它将第一个地图中:a
的值与第二个地图上:a
的值进行比较,并将其值与第一个:b
中的:b
映射到第二个地图上{{1}}的值
答案 1 :(得分:0)
似乎很简单
cljs.user=> (clojure.set/join set1 set2)
#{{:a 1, :b 2, :c 3, :d 4}
{:a 3, :b 4, :c 5, :d 6}
{:a 1, :b 2, :c 4}}
做了同样的事情。