Lisp 如何使用字符串引用属性列表属性

Lisp 如何使用字符串引用属性列表属性,lisp,common-lisp,symbols,property-list,Lisp,Common Lisp,Symbols,Property List,考虑以下情况 (setf mat (list :f1 1 :f2 2)) (getf mat:f1)按预期输出1 我有一个变量(setf str“f1”)或(setf str'f1),以有效的为准。 我想做一些类似的事情 (getf mat :str) 我如何做到这一点? 这样做不是真的好主意,考虑使用哈希表,如果你想使用字符串作为键,或者在变量中存储关键字。如果确实需要,可以将字符串转换为关键字,然后查找字段。对于我们使用的字符串到符号的转换,要使其成为关键字,只需将其插入:keyword

考虑以下情况

(setf mat (list :f1 1 :f2 2))
(getf mat:f1)
按预期输出
1

我有一个变量
(setf str“f1”)
(setf str'f1)
,以有效的为准。 我想做一些类似的事情

(getf mat :str)

我如何做到这一点?

这样做不是真的好主意,考虑使用哈希表,如果你想使用字符串作为键,或者在变量中存储关键字。如果确实需要,可以将字符串转换为关键字,然后查找字段。对于我们使用的字符串到符号的转换,要使其成为关键字,只需将其插入
:keyword
包中即可

(defparameter *data* (list :f1 1 :f2 2))

;;; Case of string IS important
;;; (intern "f1" :keyword) => :|f1|
;;; (intern "F1" :keyword) => :F1

(getf *data* (intern "F1" :keyword))
;;; => 1

此外,如果您使用的是他们的代码,则可以使用make关键字from。

谢谢!我刚从Lisp开始。