gpt4 book ai didi

clojure - clojure 中嵌套映射到嵌套向量

转载 作者:行者123 更新时间:2023-12-03 00:26:17 25 4
gpt4 key购买 nike

我想知道 clojure 中将嵌套映射转换为嵌套向量的最惯用的方法是什么。

例如来自:

{:left {:left {:left 1, :right 5, :middle 1, :score 10}, :right {:left 7, :right 8, :middle 7, :score 0}, :middle 5, :score 10}, :right 9, :middle 8, :score 10}

至:

[ [ [ 1,  5, 1, 10 ],  [ 7, 8, 7, 0], 5, 10], 9, 8, 10]

非常感谢

最佳答案

您可以使用 clojure.walk/postwalk 以后序方式遍历 Clojure 数据结构(即从叶子开始),并将映射替换为 [:left :right :middle :score] 值:

(require '[clojure.walk :refer [postwalk]])

(def nested-map
{:left {:left {:left 1, :right 5, :middle 1, :score 10},
:right {:left 7, :right 8, :middle 7, :score 0},
:middle 5,
:score 10},
:right 9,
:middle 8,
:score 10})

(postwalk
(fn [v]
(if (map? v)
((juxt :left :right :middle :score) v)
v))
nested-map)
;; => [[[1 5 1 10] [7 8 7 0] 5 10] 9 8 10]

关于clojure - clojure 中嵌套映射到嵌套向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22589178/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com