這個函數有一組數字的向量,並返回它們的交集:如何通過clojure中的鍵找到交集的地圖集?
(defn foo [& sets] (apply clojure.set/intersection (map #(set %) sets)))
例如。
user=> (foo [1 2 3] [3 4 5 1] [33 3 3 1])
#{1 3}
你怎麼能達到同樣的事情,考慮到輸入集的元素與:id
鍵映射到作爲地圖的獨特屬性中使用?
即。我試圖寫一個函數foo2這樣做:
user=> (foo2 [{:id 1 ...} {:id 2 ...} {:id 3 ...}]
[{:id 3 ...} {:id 4 ...} {:id 5 ...} {:id 1 ...}]
[{:id 33 ...} {:id 3 ...} {:id 3 ...} {:id 1 ...}])
[{:id 1 ...} {:id 3 ...}]
有沒有一種簡單的方法來做到這一點?
或者是唯一的方法來收集ids,獲得鍵的交集,然後在輸入集中查找鍵?
是否有任何方法通過定義返回任意對象的鍵的「鍵值」函數來「重載」集合函數(聯合,交集等),還是隻能使用集合原始值?
如何從給定的{:id 1 ...}地圖組成合成的{:id 1 ...}地圖? – Thumbnail
@Thumbnail輸出映射應與輸入映射相同;它不是某種具有共同ID的各種地圖的彙總。在全部地圖不相同的情況下(即多個具有不同內容的ID),只要一個地圖在結果集中具有該ID,選擇哪一個並不重要。 – Doug