2011-05-09 13 views
7

मैं दिए गए मूल्यों के आधार पर एक प्लिस्ट की चाबियों को फिर से कैसे मुद्रित और मुद्रित करूं?मूल्यों के आधार पर प्लिस्ट से प्रिंट कुंजी?

उदाहरण:

; 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 

इम तुतलाना करने के लिए नए - धन्यवाद :-)

उत्तर

12

कुछ

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

पहली पंक्ति की तरह सूची पर एक पैटर्न ले जाता है।

4

आप पाश मैक्रो का उपयोग कर सकते हैं:

(loop 
    for (key value . rest) on list 
    by #'cddr 
    when (find value '("foo" "bar") :test #'string=) 
    do (princ key)) 
संबंधित मुद्दे