2009-12-05 11 views
6

C'è una struttura del seguente formato:Association nel Common Lisp

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

C'è qualche funzione che, se io chiamo

(myf '(0 2)) 

potrebbe darmi

3 

o

((0 2) 3) 

Qualcosa di simile a un rovescio assoc

risposta

8

non riesco a capire perché questo sarebbe chiamato un ASSOC inverso.

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

Sembra ASSOC funziona bene, a patto di cambiare il test funzione di , in modo che gli elenchi utilizzati come chiavi sono testati in modo corretto.

+2

A proposito, se si desidera effettivamente un "reverse" assoc, cioè, trovare la coppia in cui il CDR corrisponde, c'è RASSOC. – Svante