タプルの配列があります。各タプルは、キーと値を持つ2つのタプルです。このタプルの配列をハッシュマップに変換する最もクリーンな方法は何でしょうか?
user=> (into {} [[:a 1] [:b 2]])
{:a 1, :b 2}
マップは、MapEntry要素のシーケンスです。各MapEntryは、キーと値のベクトルです。問題のタプルはすでにMapEntryの形式になっているため、便利です。 (これが、into
ソリューションが優れている理由でもあります。)
user=> (reduce conj {} [[:a 1] [:b 2]])
{:b 2, :a 1}
「タプル」が「2要素配列」を意味すると仮定します。
(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}