map
will work on multiple seqs, accepting one argument at a time from each:
(def a ["a" "b" "c"])
(def b ["x" "y" "z"])
(map (fn [x y] {:key1 x :key2 y}) a b) ; a and b could be lazy...
;=> ({:key1 "a", :key2 "x"} {:key1 "b", :key2 "y"} {:key1 "c", :key2 "z"})