Clojure:将密钥字符串哈希映射到关键字?

我使用Aleph从Redis中提取数据:

(apply hash-map @(@r [:hgetall (key-medication id)]))

问题是这个数据回来与键的字符串,例如:

({"name" "Tylenol", "how" "instructions"})

当我需要它:

({:name “Tylenol”, :how “instructions})

我之前通过以下方式创建了一个新地图:

{ :name (m “name”), :how (m “how”)}

但是对于大量的密钥来说这是低效率的。

如果有一个函数这样做?或者我必须循环通过每个?

最佳答案
有一个方便的功能称为keyword,将字符串转换为适当的关键字:

(keyword "foo")
=> :foo

因此,这只是一个使用此函数转换地图中的所有键的情况。

我可能使用列表解析与解构来做这个,像:

(into {} 
  (for [[k v] my-map] 
    [(keyword k) v]))

转载注明原文:Clojure:将密钥字符串哈希映射到关键字? - 代码日志