如何通过密钥名称检索缺点单元格的值?

问题描述 投票:1回答:2

假设我有一个缺点列表,如下所示:

(setq foo '(("a" . 1) ("b" . 2) ("c" . 3)))

我想通过“密钥名称”检索特定缺点单元格的值。有没有让我这样做的功能?

EG

(get-by-key "a" foo) ;; => 1

或类似的东西。提前致谢!

emacs elisp
2个回答
10
投票

这样的列表称为关联列表,或简称alist。形式上,关联列表是密钥及其关联值的一致性列表。

assoc功能正是您所需要的。它需要一个键和一个alist作为其参数,并根据equal返回alist中键的第一个关联:

ELISP> (setq foo '(("a" . 1) ("b" . 2) ("c" . 3)))
(("a" . 1)
 ("b" . 2)
 ("c" . 3))

ELISP> (assoc "a" foo)
("a" . 1)

ELISP> (cdr (assoc "a" foo))
1

assoc-string函数类似于assoc函数,但特定于其键为字符串的关联列表。除了键和alist之外,它还可以采用另一个可选参数,使得键比较不区分大小写:

ELISP> (assoc-string "a" foo)
("a" . 1)

ELISP> (assoc-string "A" foo)
nil

ELISP> (assoc-string "A" foo t)
("a" . 1)

有关关联列表相关函数的完整列表,请参阅GNU Emacs Lisp Reference Manual


0
投票

assoc-default允许您通过“密钥名称”检索特定缺点单元格的值。

ELISP> (setq foo '(("a" . 1) ("b" . 2) ("c" . 3)))
(("a" . 1)
 ("b" . 2)
 ("c" . 3))

ELISP> (assoc-default "a" foo)
1
© www.soinside.com 2019 - 2024. All rights reserved.