鉴于我有以下形式:
(def data-points [[1483249740 "ONE"]
[1483249680 "TWO"]
[1483249620 "THREE"]
[1483249560 "FOUR"]])
Run Code Online (Sandbox Code Playgroud)
如何将此数据转换为此数据?
{:data [1483249740 1483249680 1483249620 1483249560]
:value ["ONE" "TWO" "THREE" "FOUR"]}
Run Code Online (Sandbox Code Playgroud)
我也想知道如何处理类似的问题.你有什么方法可以解决这个问题,以及我需要知道哪些函数来转换任何数据.
我是clojure的新手,并没有找到满意的解决方案.
谢谢
我会用这个:
(zipmap [:data :value] (apply map vector data-points))
;;=> {:data [1483249740 1483249680 1483249620 1483249560],
;; :value ["ONE" "TWO" "THREE" "FOUR"]}
Run Code Online (Sandbox Code Playgroud)
它对数据集合使用单次传递,但比减少更简洁,但在性能方面不应该有所不同
该片段(apply map vector data)是一种在clojure中转置矩阵的惯用方法(在您的情况下,它是您需要的,因为它将列转换为行)
user> (apply map vector [[:a 1] [:b 2] [:c 3]])
;;=> ([:a :b :c] [1 2 3])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
210 次 |
| 最近记录: |