2011-05-09 25 views
7

Verilen değerlere dayanarak bir anahtarın anahtarlarını nasıl iterlerim?Anahtarları, değerlere göre plist'ten yazdırın?

Örnek: lisp için

; plist 
(defun my-list() (list :a "hi" :b "no" :c "go")) 

; from that list i want to iterate and print out keys based on values like: 
for each x in ("hi" "go") print x 

; hoping for: 
ac 

Im yeni -

(loop for (key value) on my-list by #'cddr 
     when (member value '("hi" "go") :test #'equal) 
     do (princ key)) 

ilk satır gibi

cevap

12

şey liste üzerinde bir desen taşır :-) teşekkür ederim.

4
Eğer döngü makro kullanabilirsiniz

:

(loop 
    for (key value . rest) on list 
    by #'cddr 
    when (find value '("foo" "bar") :test #'string=) 
    do (princ key)) 
İlgili konular