ハッシュをシーケンス(alist、plist、その他)に変換する - lisp-cookbook-ja/common-lisp GitHub Wiki

ハッシュ Alexandria ライブラリ

ハッシュをシーケンス(alist、plist、その他)に変換する

自作するか、ライブラリを利用します。

(let ((ht (make-hash-table :test #'equal)))
  (setf (gethash "apple" ht) 150
        (gethash "banana" ht) 300
        (gethash "lemon" ht) 300)

  (let ((alist () ))
    (maphash (lambda (key val)
               (push (cons key val) alist))
             ht)
    alist))

ライブラリ:Alexandriaを利用し、ハッシュテーブルからplistへ変換

(let ((ht (make-hash-table :test #'equal)))
  (setf (gethash "apple" ht) 150
        (gethash "banana" ht) 300
        (gethash "lemon" ht) 300)

  (alexandria:hash-table-plist ht))
;=> ("lemon" 300 "banana" 300 "apple" 150)