【问题标题】:Clojure: convert a map with keyword keys to one with equivalent string keysClojure:将具有关键字键的映射转换为具有等效字符串键的映射
【发布时间】:2019-03-11 09:10:10
【问题描述】:

我有一个像 {:a "A" :b "B"} 这样的映射,并且想将它的键转换为字符串,例如{"a" "A" "b" "B"}.

我有这个功能,可以用:

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

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

谢谢!

【问题讨论】:

  • (map second (vec m) -> (vals m)
  • 只需(reduce-kv (fn [acc k v] (assoc acc (str k) v)) {} data)
  • @cfrick 感谢您的提示,这是另一个我很难用谷歌搜索的提示

标签: dictionary clojure


【解决方案1】:

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

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2017-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-13
相关资源
最近更新 更多