That's called destructuring. Maps behave like sequences of vectors (with two elements - the key and the value). [k v] is a vector destructuring that binds k to the first element of the vector and v to the second element of the vector.
doseq is for when you're dealing with side effects. Normally you'd use map to apply a function to each element of a sequence:
(map (fn [[k v]] (str k "=" v)) my-map) will produce the sequence
( "a=1.0" "b=2.0" ) based on your original data. You can turn that into a comma-delimited list with clojure.string/join:
(clojure.string/join ", " (map (fn [[k v]] (str k "=" v)) my-map)).
BTW, you'll do better to try to work within the core language / libraries and avoid contrib if you can. The monolithic contrib of 1.2.0 is being broken up and only modules with active maintainers will go forward to 1.3.0 (new contrib modules are compatible with 1.2.0 and 1.3.0 so you can switch to the new modules first, then switch to 1.3.0). See
Where did Clojure.Contrib go? for more details of the migration.