У меня есть массив кортежей, где каждый кортеж представляет собой 2 кортежа с ключом и значением. Каким будет самый чистый способ преобразования этого массива кортежей в хэш-карту?
Преобразуйте массив кортежей в хэш-карту в Clojure
Ответ 1
user=> (into {} [[:a 1] [:b 2]])
{:a 1, :b 2}
Ответ 2
Предполагая, что "tupel" означает "двухэлементный массив":
(reduce
(fn [m tupel]
(assoc m
(aget tupel 0)
(aget tupel 1)))
{}
array-of-tupels)
Ответ 3
user=> (def a [[:a 4] [:b 6]])
user=> (apply hash-map (flatten a))
{:a 4, :b 6}
Ответ 4
Карта представляет собой последовательность элементов MapEntry. Каждый MapEntry является вектором ключа и значения. Кортежи в вопросе уже находятся в форме MapEntry, что делает вещи удобными. (Это также почему решение into
является хорошим.)
user=> (reduce conj {} [[:a 1] [:b 2]])
{:b 2, :a 1}