Dañando mi cerebro esta tarde tratando de resolver esto. Soy bastante nuevo para Clojure y Lisp en general. Tengo una estructura de datos que es un vector de mapas y quiero obtener todos los valores para una clave particular de todos los mapas en otro vector.Clojure - extrae los valores de un vector de hashmaps
Por ejemplo, digamos que este es el vector de mapas unidos a myvec:
[ { "key1" "value1" "key2" "value2"} {"key1" "value3" "key2" "value4"} ]
y quiero un vector que se parece a
[ "value1" "value3" ]
compone de todos los valores de la clave "key1"
La única manera de que pudiera pensar en que hacer es
(for [i (range (count(myvec)))] ((myvec i) "key1"))
¿Hay alguna manera más fácil? Parece que debe haberlo.
Gracias.
Gracias. Exactamente lo que estaba buscando. Estoy sacando las claves y los valores de una consulta. Devuelvo algo así como "Estado: Cerrado" y estoy configurando un hashmap como {"Estado" "Cerrado"}. Es por eso que no estoy usando: palabras clave. ¿O hay alguna forma de usar palabras clave? –
Puede transformar una cadena en una palabra clave con la función 'keyword'. No vale la pena hacerlo si solo busca algo en el mapa una vez, pero por ejemplo '(into {} (para [[kv] mymap] [(palabra clave k) v]))' convertiría todas las teclas del mapa a palabras clave (con la condición de que sean cadenas actualmente). – amalloy