list - 将列表映射转换为映射列表(即行到列)

标签 list clojure maps transformation

我在 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}]

目前我有点困惑如何做到这一点。

最佳答案

在 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

关于list - 将列表映射转换为映射列表(即行到列),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14583295/

相关文章:

android - OSMDroid:使标记居中

合并多个Sass贴图

python - 当尺寸不匹配时,将第一个添加到 python 列表中

Python列表错误,列表索引超出范围

python - Python 猜测列表

Clojure - 评估高阶函数的返回函数

使用 List<int[]>.add() 重复值的 Java 递归

unit-testing - Clojure 单元测试 : Check if a function was called

clojure - Clojure 中 ~' or ' ~ 的目的是什么?

api - Bing map API - 按域名搜索无法一致工作?