假设我有一个大型的alist,其中有多个项目具有相同的键但具有相同或不同的值:
'((a . 1)
(b . 2)
(a . 3)
(a . 4)
(b . 5)
(b . 6))
通常在使用alist时,可以使用assoc
访问项目,该项目返回列表中的第一个匹配项目并忽略其余项目。因此,对待alist的惯用方法是,每次要使用旧键替换alist中的项时,只需添加一个新的点对并忽略旧的。因此,无论您有多少重复项,assoc
都会忽略它们。您可以通过alist API工作并忽略实现细节,可以这么说。但是,如果我真的希望有一个alist所有重复的物理删除怎么办?只有最新的点对保留在列表中,所以上面的alist会变成'((a . 1) (b . 2))
?
Common Lisp或Emacs Lisp的任何解决方案都是可以接受的。