Correction: (concat data1 data2) should be (concat data2 data1) On Tue, Apr 26, 2011 at 6:37 PM, Jonathan Fischer Friberg < odysso...@gmail.com> wrote:
> (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