gpt4 book ai didi

Clojure:在嵌套 HashMap 中搜索 val 并返回包含该 val 的键序列的函数

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

假设我们有一个包含嵌套数据结构的集合:

(def coll
{:a "aa"
:b {:d "dd"
:e {:f {:h "hh"
:i "ii"}
:g "gg"}}
:c "cc"})

我想创建一个函数,在嵌套结构中的任何位置搜索 val 并返回包含该 val 的键序列

(search-parents "gg" coll) ; or (search-parents coll "gg")
;> [:b :e :g]

谢谢!

最佳答案

据我所知,没有内置函数可以执行此操作。看来您本质上是在寻找 clojure.core/get-in 的反函数。我认为 clojure.walk 在这里可能有用,但我认为这不是一个很好的选择。

但是,编写一个递归函数来执行搜索并仅返回匹配的键非常简单:

(defn find-in [coll x]
(some
(fn [[k v]]
(cond (= v x) [k]
(map? v) (if-let [r (find-in v x)]
(into [k] r))))
coll))

关于Clojure:在嵌套 HashMap 中搜索 val 并返回包含该 val 的键序列的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18731373/

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