(defn merge-data [data1 data2]
  (map first (partition-by :id (sort-by :id (concat data1 data2)))))

Since the sorting is stable (relative order is kept), we know that the first
occurrence of each id is either the existing map from data1, or the new map
from data2.

On Tue, Apr 26, 2011 at 5:34 PM, pepijn (aka fliebel) <pepijnde...@gmail.com
> wrote:

> Another option is using clojure.set, as is shown here:
> https://github.com/pepijndevos/Begame/blob/master/src/begame/util.clj#L99
>
> On Apr 26, 10:10 am, Meikel Brandmeyer <m...@kotka.de> wrote:
> > Hi,
> >
> > you can construct the output sequence from your input sequences.
> >
> > (defn merge-data
> >   [data-orig data-override]
> >   (let [override-ids (set (map :id data-override))]
> >     (concat data-override (remove (comp override-ids :id) data-orig))))
> >
> > If you need your output sorted you can also add a "(sord-by :id ...)"
> around
> > the concat.
> >
> > Sincerely
> > Meikel
>
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to