Lisp中的关联列表 - 获取密钥的所有条目

时间:2013-04-25 20:19:23

标签: lisp common-lisp

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

2 个答案:

答案 0 :(得分:11)

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

->

((A 1) (A 2))

答案 1 :(得分:3)

如果你有一个关联列表a

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

您可以通过调用remove-if-not来保留所有拥有a汽车的货币对:

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

这导致:

((A 1) (A 2))

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