加入多个键上的clojure集

时间:2018-05-23 14:15:00

标签: join clojure

有没有办法在多个密钥上加入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} }

2 个答案:

答案 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}}

做了同样的事情。