Combinação e mesclagem de maps em Clojure


Clojure fornece funções para unir múltiplos mapas e resolver conflitos de chaves.

merge

Combina vários mapas em um único.

Se houver chaves duplicadas, o valor do mapa posicionado mais à direita prevalece.

(def scores {"Angela" 1024})
 
(def new-scores {"Angela" 300 "Jeff" 900})
 
(merge scores new-scores) 
;; => {"Angela" 300, "Jeff" 900}

merge-with

Permite fornecer uma função para tratar conflitos. Se a chave existe em dois mapas com valores e , o novo valor será .

;; Soma os valores em caso de chaves repetidas
(merge-with + scores {"Angela" 100}) 
;; => {"Angela" 1124}

zipmap

Cria um mapa correlacionando duas sequências, uma de chaves e outra de valores.

(zipmap [:a :b :c] [1 2 3])
;; => {:a 1, :b 2, :c 3}

Referências


https://clojure.org/guides/learn/hashed_colls#_maps