Подтвердить что ты не робот

Преобразуйте массив кортежей в хэш-карту в Clojure

У меня есть массив кортежей, где каждый кортеж представляет собой 2 кортежа с ключом и значением. Каким будет самый чистый способ преобразования этого массива кортежей в хэш-карту?

4b9b3361

Ответ 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}