2

Clojureには次のデータ構造があります

{:a [1 2 3]
 :b [4 5 6]
 :c [7 8 9]} 

そして、私はそれを次のようなものに変換したいと思います

[{:a 1 :b 4 :c 7}
 {:a 2 :b 5 :c 8}
 {:a 3 :b 6 :c 9}]

現時点では、これを行う方法についてちょっと困惑しています。

4

2 に答える 2

3

Clojure では、変換後のマップ内のキーの順序を保証することはできません。順序ではなく、キーによってインデックスが作成されます。

ただし、ベクトルは. またget-in、座標のベクトルを使用して位置を検索できます。

=> (def mat
     [[1 2 3]
      [4 5 6]
      [7 8 9]])

=> (defn transpose
     [m]
     (apply mapv vector m))

=> (get-in (transpose mat) [1 2])
8
于 2013-01-29T17:46:36.000 に答える
2

とった:

(defn transpose-lists [x] 
  (map (fn [m] (zipmap (keys x) m)) (apply map vector (vals x))))

残念ながら、キーの順序は保持されません。誰かがより良い解決策を持っているなら、もちろん私はそれを聞きたいです!

于 2013-01-29T13:02:52.923 に答える