首页 > 解决方案 > Clojure:将具有关键字键的映射转换为具有等效字符串键的映射

问题描述

我有一个类似的地图,{:a "A" :b "B"}并且想将其键转换为字符串,例如{"a" "A" "b" "B"}.

我有这个功能,它有效:

(defn keyword-keys->strs [m]
  (zipmap
    (map name (keys m))
    (map second (vec m))))

但是有没有更惯用或专门设计的方式来做到这一点?

谢谢!

标签: dictionaryclojure

解决方案


有一个内置函数可以递归地将映射键转换为字符串:

(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"}}

推荐阅读