You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Clojure中将关键字键HashMap转换为字符串键HashMap

将Clojure关键字键哈希表转换为字符串键哈希表

输入数据结构:

{:a {:x 1 :y 2} :b {:w 1 :z 2} :c {:m 1 :n 2}}

期望输出:

{"a" {:x 1 :y 2} "b" {:w 1 :z 2} "c" {:m 1 :n 2}}

两种实用解法

  • 方法一:使用reduce和assoc
(def original {:a {:x 1 :y 2} :b {:w 1 :z 2} :c {:m 1 :n 2}})

(def converted
  (reduce (fn [acc [k v]]
            (assoc acc (name k) v))
          {}
          original))

通过reduce遍历原哈希表的每一组键值对,用name函数将关键字类型的键转换为字符串,再通过assoc将新的键值对存入空哈希表中,最终得到目标结构。

  • 方法二:使用into和map(更简洁)
(def original {:a {:x 1 :y 2} :b {:w 1 :z 2} :c {:m 1 :n 2}})

(def converted (into {} (map (fn [[k v]] [(name k) v]) original)))

先用map把原哈希表的每个键值对转换为「字符串键+原值」的结构,再通过into {}将转换后的序列直接构建成哈希表,写法更紧凑。

注意:上述两种方法仅转换顶层的关键字键,内层嵌套的关键字(如:x、:w等)会保持原样,完全符合需求。

内容的提问来源于stack exchange,提问作者Yavuz Kuru

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 21:40:19