gpt4 book ai didi

clojure - 遍历嵌套映射的所有键

转载 作者:行者123 更新时间:2023-12-04 05:46:38 24 4
gpt4 key购买 nike

给定:

{:o {:i1 1
:i2 {:ii1 4}}}

我想从根作为向量以“绝对”形式迭代 map 的键。所以我想:

{
[:o :i1] 1
[:o :i2 :ii1] 4
}

结果。基本上只获取叶子节点。

最佳答案

我认为更好的版本,使用 for 而不是 mapcat:

(defn flatten-keys [m]
(if (not (map? m))
{[] m}
(into {}
(for [[k v] m
[ks v'] (flatten-keys v)]
[(cons k ks) v']))))

该函数自然是递归的,非映射最方便的基本情况是“这个值,没有通向它的keyseq”。对于 map ,您只需对 map 中的每个值调用 flatten-keys,并将其 key 添加到结果 map 的每个键序列中。

关于clojure - 遍历嵌套映射的所有键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32853004/

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