Trong Clojure, tôi muốn kết hợp nhiều bản đồ vào một bản đồ duy nhất nơi ánh xạ với cùng một khóa được kết hợp thành một danh sách.Trong clojure, làm thế nào để hợp nhất một số bản đồ kết hợp ánh xạ với cùng một khóa vào một danh sách?
Ví dụ:
{:humor :happy} {:humor :sad} {:humor :happy} {:weather :sunny}
sẽ dẫn đến:
{:weather :sunny, :humor (:happy :sad :happy)}
Tôi nghĩ về:
(merge-with (comp flatten list) data)
Nhưng nó không phải là hiệu quả vì flatten có O (n) phức tạp.
Sau đó, tôi đã đưa ra:
(defn agg[x y] (if (coll? x) (cons y x) (list y x)))
(merge-with agg data)
Nhưng nó không cảm thấy ngữ. Bạn có ý tưởng nào khác không?
Cuối cùng cũng gây ra vấn đề về giá trị bản đồ của bạn bao gồm các bộ sưu tập .... – mikera