dictionary - Clojure:将具有关键字键的映射转换为具有等效字符串键的映射
问题描述
我有一个类似的地图,{:a "A" :b "B"}
并且想将其键转换为字符串,例如{"a" "A" "b" "B"}
.
我有这个功能,它有效:
(defn keyword-keys->strs [m]
(zipmap
(map name (keys m))
(map second (vec m))))
但是有没有更惯用或专门设计的方式来做到这一点?
谢谢!
解决方案
有一个内置函数可以递归地将映射键转换为字符串:
(clojure.walk/stringify-keys {:a "A" :b "B"})
=> {"a" "A", "b" "B"}
(clojure.walk/stringify-keys {:a "A" :b {:c "C"}})
=> {"a" "A", "b" {"c" "C"}}