gpt4 book ai didi

list - 遍历 map 列表

转载 作者:行者123 更新时间:2023-12-02 14:44:39 25 4
gpt4 key购买 nike

我是 Clojure 的初学者,我有一个简单的问题

假设我有一个由 map 组成的列表。每个 map 都有一个 :name 和 :age

我的代码是:

(def Person {:nom rob :age 31 } )
(def Persontwo {:nom sam :age 80 } )
(def Persontthree {:nom jim :age 21 } )
(def mylist (list Person Persontwo Personthree))

现在我如何遍历列表。举例来说,我有一个给定的:名称。我如何遍历列表以查看是否有任何 map :名称与我的:名称匹配。然后如果有匹配的 map ,我如何获取该 map 的索引位置?

-谢谢

最佳答案

(defn find-person-by-name [name people] 
(let
[person (first (filter (fn [person] (= (get person :nom) name)) people))]
(print (get person :nom))
(print (get person :age))))

编辑:以上是问题编辑之前的问题答案;这是更新后的 - filtermap 开始变得困惑,所以我使用 loop 从头开始​​重写它:

; returns 0-based index of item with matching name, or nil if no such item found
(defn person-index-by-name [name people]
(loop [i 0 [p & rest] people]
(cond
(nil? p)
nil
(= (get p :nom) name)
i
:else
(recur (inc i) rest))))

关于list - 遍历 map 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1123557/

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