Clojure: Rename and select keys from map with one iteration -


in clojure, want both rename-keys , select-keys map. simple way of doing with:

(-> m     (rename-keys new-names)     (select-keys (vals new-names))) 

but itetate on entire map twice. there way 1 iteration?

sure, there way single iteration.

you using reduce-kv function:

(reduce-kv #(assoc %1 %3 (get m %2)) {} new-names) 

or loop:

(into {} (for [[k v] new-names] [v (get m k)])) 

if want simple piece of code, use fmap function algo.generic library:

(fmap m (map-invert new-names)) 

Comments

Popular posts from this blog

android - MPAndroidChart - How to add Annotations or images to the chart -

javascript - Add class to another page attribute using URL id - Jquery -

firefox - Where is 'webgl.osmesalib' parameter? -