conj - Convierte una matriz de tuplas en un hash-map en Clojure
reduce in clojure (4)
Suponiendo que "tupel" significa "matriz de dos elememt":
(reduce
(fn [m tupel]
(assoc m
(aget tupel 0)
(aget tupel 1)))
{}
array-of-tupels)
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?
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 también es la razón por la cual la solución es buena).
user=> (reduce conj {} [[:a 1] [:b 2]])
{:b 2, :a 1}
user=> (def a [[:a 4] [:b 6]])
user=> (apply hash-map (flatten a))
{:a 4, :b 6}
user=> (into {} [[:a 1] [:b 2]])
{:a 1, :b 2}