Tengo una matriz de tuplas, donde cada tupla es una 2 tupla con una clave y un valor. ¿Cuál sería la forma más limpia de convertir este conjunto de tuplas en un hashmap?Convertir una matriz de tuplas en un hash-map en Clojure
Respuesta
user=> (into {} [[:a 1] [:b 2]])
{:a 1, :b 2}
Suponiendo que "tupel" significa "matriz de dos elememt":
(reduce
(fn [m tupel]
(assoc m
(aget tupel 0)
(aget tupel 1)))
{}
array-of-tupels)
user=> (def a [[:a 4] [:b 6]])
user=> (apply hash-map (flatten a))
{:a 4, :b 6}
'flatten' es excesivo para este problema. Puede aprovechar las tuplas en forma de MapEntry (vector de clave y valor). – miner49r
Nunca, nunca use 'aplanar' para una situación como esta: ¡felizmente aplanará todas sus llaves y valores también, si resultan ser estructuras de datos! –
un mapa es una secuencia de elementos MapEntry. Cada MapEntry es un vector de una clave y un valor. Las tuplas en la pregunta ya están en forma de MapEntry, lo que hace las cosas más convenientes. (Esa es también la razón por la cual la solución into
es buena).
user=> (reduce conj {} [[:a 1] [:b 2]])
{:b 2, :a 1}
¡Gracias por una buena explicación! Entonces, solo el vector de 2 elementos es MapEntry, así (en {} [[: a 1] {: b 2}]) funcionará, pero (en {} ['(: a 1) {: b 2}]) no funciona. Obtiene el error de "java.lang.ClassCastException: clojure.lang.Keyword no se puede convertir a java.util.Map $ Entry". Me pregunto por qué Clojure no puede tratar la secuencia de los 2 elementos de la misma manera en este contexto. Lo hará más consistente. ¿Cuál es la razón por la que no? –
- 1. ¿Convertir una matriz de tuplas de Ruby en un hash con una matriz de claves?
- 2. Almacenar una matriz en HashMap
- 3. Pandas convertir dataframe a una matriz de tuplas
- 4. Cómo convertir una secuencia a un byte [] en Clojure?
- 5. pitón convertir una lista en una lista de tuplas
- 6. convertir un número entero en una matriz
- 7. Convertir HashMap.toString() a HashMap en Java
- 8. ¿La mejor manera de convertir una lista plana en un conjunto de dos tuplas en Erlang?
- 9. convertir la lista de tuplas en varias listas en Python
- 10. Convertir una matriz 1D en una matriz 2D en numpy
- 11. ¿Cómo convertir una matriz a una Tupla?
- 12. convertir una matriz FileInfo en una matriz de cadenas C#
- 13. Python - NumPy - tuplas como elementos de una matriz
- 14. Cómo convertir una matriz de bytes en una matriz int?
- 15. Convertir imagen en una matriz en python
- 16. ¿Por qué Java HashMap nativo en Clojure se ejecuta lentamente?
- 17. Convertir diccionario.keyscolección en una matriz de cadenas
- 18. ¿Cómo convertir una cadena a una función en Clojure?
- 19. Convertir una matriz numpy 2D en una matriz estructurada
- 20. Buscar un HashMap en un ArrayList de HashMap
- 21. Convertir una matriz multidimensional en una matriz unidimensional
- 22. ¿Cómo convertir una palabra clave clojure en una cadena?
- 23. ¿Cómo convertir una cadena de números clojure en enteros separados?
- 24. Convertir una secuencia de cadenas en enteros (Clojure)
- 25. Algoritmo para convertir una matriz multidimensional en una matriz unidimensional
- 26. Convertir PHP cadena de matriz en una matriz
- 27. Convertir una matriz de matlab en un vector
- 28. ¿Cómo puedo convertir un vector en una matriz de celdas?
- 29. Girar una matriz de lista de lista en Clojure
- 30. Java: cómo convertir HashMap <String, Object> en la matriz
Tenga en cuenta que esto también funciona para matrices de matrices de dos elementos; solo tendría que agregar un '(map vec ...)' alrededor del argumento de la matriz: '(into {} (map vec an-array-of -dos elementos de matrices)) '. –
Y otra vez, uno de esos momentos "duh" que tan a menudo tiene mientras usa Clojure. Buena respuesta. – Isaac
Pero es relativamente caro. – kotarak