首页 > 解决方案 > clojure 中的函数查找

问题描述

帮帮我,我需要编写查找函数,在列表列表中查找值,因为每个元素都是有序的(键值)。例如

((key1 value1) (key2 value2) ....)

这个功能需要

(look-up key list-of-lists)

并返回具有键的列表的值。例如:

(look-up b '(((a b) 1) (c 2) (b 3)))3
(look-up (a b) '(((a b) 1) (c 2) (b 3)))1
(look-up d '(((a b) 1) (c 2) (b 3)))nil

我有这个代码:

(defn look-up [key list-of-lists]
  (if (= key (first(first list-of-lists))) (second(first list-of-lists)))
  (:else (look-up (rest list-of-lists key))))

标签: clojure

解决方案


(defn lookup [x xs]
  (first (for [[k v] xs :when (= k x)]
           v)))

推荐阅读