2009-12-05 38 views
6

Có một cấu trúc của các dạng sau:Hiệp hội trong Common Lisp

(setq dist '(((1 1) 1) 
       ((0 2) 3) 
       ((1 2) 1) 
       ((2 3) 3) 
       ((3 5) 4))) 

Có bất kỳ chức năng đó, nếu tôi gọi

(myf '(0 2)) 

thể cho tôi

3 

hoặc

((0 2) 3) 

Điều gì đó giống như đảo ngược assoc

Trả lời

8

Tôi không hiểu tại sao điều này được gọi là ASSOC ngược lại.

(assoc '(0 2) dist :test #'equal) 
> ((0 2) 3) 

Dường như ASSOC hoạt động tốt, miễn là bạn thay đổi kiểm tra chức năng, do đó danh sách được sử dụng như các phím được kiểm tra một cách chính xác.

+2

Bằng cách này, nếu bạn thực sự muốn một "ngược" assoc, nghĩa là, tìm cặp mà CDR phù hợp, có RASSOC. – Svante