2

在 Common Lisp 中,有没有办法从alist匹配给定的键中检索所有条目?

4

2 回答 2

11
(remove 'a '((a 1) (a 2) (b 1))
        :test-not #'eql
        :key #'first)

->

((A 1) (A 2))
于 2013-04-25T20:48:38.627 回答
3

如果您有关联列表a

(defvar a '((a 1) (a 2) (b 1)))

a你可以通过调用 remove-if-not来保留所有有 car 的对:

(remove-if-not (lambda (x) (eq (car x) 'a)) a)

这导致:

((A 1) (A 2))

即使当被视为关联列表时,也只会返回其中的第一个。

于 2013-04-25T20:26:18.553 回答