I'm pulling data from Redis using Aleph:
(apply hash-map @(@r [:hgetall (key-medication id)]))
The problem is this data comes back with strings for keys, for ex:
({"name" "Tylenol", "how" "instructions"})
When I need it to be:
({:name "Tylenol", :how "instructions})
I was previously creating a new map via:
{ :name (m "name"), :how (m "how")}
But this is inefficient for a large amount of keys.
If there a function that does this? Or do I have to loop through each?
There is a handy function called keyword that converts Strings into the appropriate keywords:
(keyword "foo")
=> :foo
So it's just a case of transforming all the keys in your map using this function.
I'd probably use a list comprehension with destructuring to do this, something like:
(into {}
(for [[k v] my-map]
[(keyword k) v]))